typedef到模板类型

时间:2011-04-06 01:29:56

标签: c++ templates typedef

以下是什么问题?

typedef boost::shared_ptr SharedPtr;

GCC给出以下错误:

  

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

2 个答案:

答案 0 :(得分:6)

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

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

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

// usage
typename SharedPtr<int>::Type sp;

答案 1 :(得分:0)

C ++ 11:

template<typename T>
using SharedPtr = boost::shared_ptr<T>:

或者您可以使用C ++ 11内置的shared_ptr:

template<typename T>
using SP = std::shared_ptr<T>;