In Visual C++ (2008 und 2010) wird der folgende Code mit dem folgenden Fehler nicht kompiliert:
#include <memory>
void Foo( std::shared_ptr< int > test = ::std::make_shared< int >( 5 ) )
{
}
class P
{
void
Foo( std::shared_ptr< int > test = ::std::make_shared< int >( 5 ) )
{
}
};
Fehler C2039: 'make_shared' : ist kein Mitglied von '`global namespace''
Fehler C3861: 'make_shared': Bezeichner nicht gefunden
Er beschwert sich über die Definition von P::Foo() und nicht von ::Foo().
Weiß jemand, warum es gültig ist, für Foo() ein Standardargument mit std::make_shared aber nicht P::Foo() haben?