Definição de função C ++ e incompatibilidade de declaração variável?

Considere este código muito simples:

#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;
}

Por que os relatórios do Visual Studio

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

e não hábar objeto criado ... como pode esta linhaBar bar( std::shared_ptr<Foo>( foo ) ); ser interpretado como uma definição de função?

eu chequeiOs parênteses após o nome do tipo fazem diferença com new? e tambémC ++: aviso: C4930: função prototipada não chamada (foi definida uma definição de variável?), mas sinto que meu problema é diferente aqui, pois não usei a sintaxeFoo() nemBar().

Editar: Observe que ele compila com êxito:

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

questionAnswers(1)

yourAnswerToTheQuestion