Reputation: 143
#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.
Upvotes: 14
Views: 3997
Reputation: 219255
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.
Upvotes: 26