在Stroustrup的“ C ++之旅”中,有一个代码段
template<typename C>
using Value_type = typename C::value_type; // the type of C’s elements
template<typename Container>
void algo(Container& c)
{
/* (1) */
Vector<Value_type<Container>> vec; // keep results here
// ...
}
为什么我们需要它using
,它与(1)
仅仅编写它有何不同
Vector<Container::value_type> vec;
原因是此声明:
Vector<Container::value_type> vec;
实际上无效,并且是错误。相反,你需要编写:
Vector<typename Container::value_type> vec;
这比较冗长。
别名模板的目的Value_type
是使成员类型别名的使用更加方便,Container
而不必typename
每次都说。