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;