typedef到模板类型

Mat*_*ner 4 c++ templates typedef

以下是什么问题?

typedef boost::shared_ptr SharedPtr;
Run Code Online (Sandbox Code Playgroud)

GCC给出以下错误:

ISO C++禁止声明'shared_ptr'没有类型

Jam*_*lis 6

C++还没有"模板类型定义",您可以在其中"重命名"这样的模板.这是在C++ 0x中添加的一个功能,其中这样的"typedef"被称为"别名模板".

目前最简单的解决方法是使用带有嵌套typedef的类模板:

template <typename T>
struct SharedPtr
{
    typedef std::shared_ptr<T> Type;
};

// usage
typename SharedPtr<int>::Type sp;
Run Code Online (Sandbox Code Playgroud)