Question

#include <iostream>
#include <memory>

template<typename T>
class Test: public std::enable_shared_from_this< Test<T> >
{

public:

    std::shared_ptr< Test<T> > getMe()
    {
        return shared_from_this();
    };

};

int main(int argc, const char * argv[])
{
    Test<int>   aTest;

    return 0;
}

When i try to compile this on Xcode 5 i get

Use of undeclared identifier 'shared_from_this'

I tested it and its working on Visual Studio 2010.

Était-ce utile?

La solution

    return this->shared_from_this();
           ^^^^^^

VC++ 2010 does not implement the lookup rules for templated base classes exactly correctly. The clang behavior is correct. The above fix will make it work on both your platforms.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top