关于 Stroustrup 书中示例中模板 value_type 用法的问题
Question about template's value_type usage in Stroustrup's book example
在 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
。
在 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
。