【发布时间】:2010-11-11 09:34:11
【问题描述】:
据我了解,C++0x 中的模板别名将允许我们执行以下操作:
template <typename T>
using Dictionary = std::map< std::string, T >;
Dictionary<int> ints;
ints[ "one" ] = 1;
ints[ "two" ] = 2;
我有两个问题:
首先,我们能否做到这一点(绑定到任何类型,或者只是模板):
template <typename Iter>
using ValueType = std::iterator_traits<Iter>::value_type;
其次,使用别名需要在模板中使用typename关键字,例如:
template <typename Iter>
typename ValueType<Iter> sum(Iter first, Iter last) { ... }
// ^ required?
或者在别名声明中是否需要?
using ValueType = typename std::iterator_traits<Iter>::value_type;
// ^ required?
或者两者都没有?
【问题讨论】:
标签: c++ templates c++11 typename