typedef包含模板化类的共享指针

Chr*_*ris 2 c++ templates class shared-ptr forward-declaration

假设我有一些模板类前向声明​​,我想键入一个共享指针.我该怎么做?

template<typename T> class Arg;
typedef std::tr1::shared_ptr<Arg> ArgPtr; // Compiler error
Run Code Online (Sandbox Code Playgroud)

dir*_*tly 6

您可能还需要模板typedef.阅读Sutter的文章.

在C++ 03中,你需要一个hack:

template <typename Arg> struct ArgPtr {
     typedef std::shared_ptr<Arg> ArgPtrType;
};
Run Code Online (Sandbox Code Playgroud)

在C++ 11中,您可以直接使用模板别名和using关键字:

template <typename T>
using ArgPtrType = std::shared_ptr<Arg<T>>;
Run Code Online (Sandbox Code Playgroud)