Pooyan McSporran wrote:
I'm in the process of converting a large pile of legacy code which uses raw pointers to instead use boost::shared_ptr exclusively. I've got almost all of it converted and working, with one exception.
Normally, given a type of Foo I define a smart pointer FooPtr, for example: class Foo; typedef boost::shared_ptr<Foo> FooPtr;
But some code uses a templated type, for example: template<typename T> class Foo;
Ideally, I'd use a templated typedef, for example: template<typename T> typedef boost::shared_ptr
FooTPtr; but that is currently illegal in C++. Has anyone found a clean workaround?
For now, I'll just do without a typedef in this case :)
You can drop a definition of the shared pointer inside the template class: template<typename T> class Foo { public: typedef shared_ptr<Foo> Ptr; }; and then you could refer to it as Foo<T>::Ptr, although you'd need to use "typename" in some circumstances. -- Jonathan Biggar jon@levanta.com