Según entiendo, los alias de plantillas de C++ 0x nos permitirá hacer lo siguiente:Flexibilidad de alias de plantillas de C++ 0x
template <typename T>
using Dictionary = std::map< std::string, T >;
Dictionary<int> ints;
ints[ "one" ] = 1;
ints[ "two" ] = 2;
Tengo dos preguntas:
primer lugar, se seamos capaces de hacer esto (se unen a cualquier tipo, o simplemente las plantillas):
template <typename Iter>
using ValueType = std::iterator_traits<Iter>::value_type;
en segundo lugar, se utiliza los alias requieren el uso de la palabra clave typename
en las plantillas, por ejemplo:
template <typename Iter>
typename ValueType<Iter> sum(Iter first, Iter last) { ... }
//^required?
¿O es necesario en la declaración de alias?
using ValueType = typename std::iterator_traits<Iter>::value_type;
// ^required?
¿O ninguno?