C++ 唯一ptr列表的类型定义

C++ 唯一ptr列表的类型定义,c++,list,unique-ptr,C++,List,Unique Ptr,我想为std::list创建一个typedef,这样我就可以键入PtrList,它将被std::list替换 我知道如何使用#定义: 定义PtrList(x)std::list 但我认为typedef是合适的。然而,我不知道如何认识到这一点。谁能告诉我怎么打这个吗?怎么样 template<typename A> using PtrList = std::list<std::unique_ptr<A>>; PtrList<SomeStructure&

我想为
std::list
创建一个typedef,这样我就可以键入
PtrList
,它将被
std::list
替换

我知道如何使用#定义:

定义PtrList(x)std::list 但我认为typedef是合适的。然而,我不知道如何认识到这一点。谁能告诉我怎么打这个吗?

怎么样

template<typename A>
using PtrList = std::list<std::unique_ptr<A>>;

PtrList<SomeStructure> myList;
模板
使用PtrList=std::list;
PtrList-myList;

在当前版本的C++(C++ 11)中,可以使用类型别名:

使用PtrList=std::list的模板;
首先,尽量不要使用
#define
生成代码。除条件编译外,应避免使用#define

正确的类型别名:

template<class T> using PtrList = std::list<std::unique_ptr<T>>;
使用PtrList=std::list的模板; 示例用法:

PtrList<int> intPtrList; 
PtrList-intPtrList;

在C++11中:使用模板别名

template <class T>
using PtrList = std::list<std::unique_ptr<T>>;

//later:
PtrList<int> myIntPtrList;

正确,但当然在C++98/03中,没有以…@Angew-gotcha开头的
std::unique\u ptr
。但是存在没有模板别名的一般问题;-)
PtrList<int> intPtrList; 
template <class T>
using PtrList = std::list<std::unique_ptr<T>>;

//later:
PtrList<int> myIntPtrList;
template <class T>
struct PtrList { typedef std::list<boost::shared_ptr<T>> type; };

//later:
PtrList<int>::type myIntPtrList;