據我瞭解,在C++ 0x中模板的別名將使我們能夠做到以下幾點:靈活的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?
或者都不是?