开发者

How to typedef a template class? [duplicate]

开发者 https://www.devze.com 2023-03-24 05:51 出处:网络
This question already has an answer here: C++ template typedef (1 answer) Closed 8 years ago. How should I typedef a template class ? Something like:
This question already has an answer here: C++ template typedef (1 answer) Closed 8 years ago.

How should I typedef a template class ? Something like:

typedef std::vector myVector;  // <--- compiler error

I know of 2 ways:

(1) #define myVector std::vector // not so good
(2) template<typename T开发者_开发问答>
    struct myVector { typedef std::vector<T> type; }; // verbose

Do we have anything better in C++0x ?


Yes. It is called an "alias template," and it's a new feature in C++11.

template<typename T>
using MyVector = std::vector<T, MyCustomAllocator<T>>;

Usage would then be exactly as you expect:

MyVector<int> x; // same as: std::vector<int, MyCustomAllocator<int>>

GCC has supported it since 4.7, Clang has it since 3.0, and MSVC has it in 2013 SP4.


In C++03 you can inherit from a class (publically or privately) to do so.

template <typename T>
class MyVector : public std::vector<T, MyCustomAllocator<T> > {};

You need to do a bit more work (Specifically, copy constructors, assignment operators) but it's quite doable.

0

精彩评论

暂无评论...
验证码 换一张
取 消