关于 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