Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2006-01-14 09:20:41


Pooyan McSporran <duckfreezone_at_[hidden]> writes:

> 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<Foo<T> > FooTPtr;
> but that is currently illegal in C++.
>
> Has anyone found a clean workaround?

How clean it is may be open to question, but:

    template <class T> class FooTPtr
      : boost::shared_ptr<Foo<T> >
    {
       // forwarding ctors here...
    };

should work.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net