4 Stimmen

std::make_shared als Standardargument ist nicht kompilierbar

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X