, Не очень читаемый, хотя ...

отрим этот очень простой код:

#include <memory>

class Foo
{
public:
    Foo() {};
};

class Bar
{
public:
    Bar( const std::shared_ptr<Foo>& foo ) {}
}; 

int main()
{
    Foo* foo = new Foo;
    Bar bar( std::shared_ptr<Foo>( foo ) );
    return 0;
}

Почему отчеты Visual Studio

warning C4930: 'Bar bar(std::shared_ptr<Foo>)': prototyped function not called (was a variable definition intended?)

и нетbar объект создан ... как можно эту строкуBar bar( std::shared_ptr<Foo>( foo ) ); интерпретировать как определение функции?

Я проверилЕсть ли в скобках после имени типа разница с новым? а такжеC ++: предупреждение: C4930: функция-прототип не вызвана (было ли предназначено определение переменной?), но я чувствую, что моя проблема здесь другая, так как я не использовал синтаксисFoo() ниBar().

Изменить: Обратите внимание, что он успешно компилирует:

Foo* foo = new Foo;
std::shared_ptr<Foo> fooPtr( foo );
Bar bar( fooPtr );

Ответы на вопрос(1)

Ваш ответ на вопрос