首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++0x中模板别名的灵活性

C++0x中模板别名的灵活性
EN

Stack Overflow用户
提问于 2010-11-11 17:34:11
回答 2查看 6.9K关注 0票数 18

据我所知,C++0x中的模板别名将允许我们执行以下操作:

代码语言:javascript
复制
template <typename T>
using Dictionary = std::map< std::string, T >;

Dictionary<int> ints;
ints[ "one" ] = 1;
ints[ "two" ] = 2;

我有两个问题:

首先,我们是否能够做到这一点(绑定到任何类型,或仅绑定到模板):

代码语言:javascript
复制
template <typename Iter>
using ValueType = std::iterator_traits<Iter>::value_type;

其次,使用别名是否需要在模板中使用typename关键字,例如:

代码语言:javascript
复制
template <typename Iter>
typename ValueType<Iter> sum(Iter first, Iter last) { ... }
// ^ required?

或者它在别名声明中是必需的?

代码语言:javascript
复制
using ValueType = typename std::iterator_traits<Iter>::value_type;
//                   ^ required?

或者两者都不是?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4152976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档