Chinaunix首页 | 论坛 | 博客
  • 博客访问: 150941
  • 博文数量: 31
  • 博客积分: 1455
  • 博客等级: 上尉
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-09 02:20
文章存档

2012年(2)

2011年(18)

2010年(11)

分类: C/C++

2011-11-17 10:14:05

在C++中,这样用typedef定义一个模板是不行的,
比如想这么做,没编译器支持的:

  1. template<class T>
  2. typedef std::vector<T> vec;

  3. vec<int> v; //想要作为std::vector<int> v; 的等价代码

注意,以上是段错的代码,只是酒鬼的一厢情愿而已。。

c++11给出了一个解决方案,使用using关键词,

  1. template<class T>
  2. using vec = std::vector<T>;

  3. vec<int> v; //作为std::vector<int> v; 的等价代码

这样,就达到了目标,
在一个已存在的模板基础上,通过using定义出了一个新的模板。

C++11的这个using方案,事实上已不可再称为typedef模板了,愉悦中的小小缺憾,
为什么不用typedef ?
为什么不用typedef ?
为什么不用typedef ?

(转载请注明来自:nuvoton-m0.com)

阅读(2241) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~