Warm tip: This article is reproduced from serverfault.com, please click

c++-关于Stroustrup的图书示例中模板的value_type用法的问题

(c++ - Question about template's value_type usage in Stroustrup's book example)

发布于 2020-12-01 00:29:04

在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;
Questioner
SimpleAsk
Viewed
0
cigien 2020-12-01 08:33:41

原因是此声明:

Vector<Container::value_type> vec;

实际上无效,并且是错误。相反,你需要编写:

Vector<typename Container::value_type> vec;

这比较冗长。

别名模板的目的Value_type是使成员类型别名的使用更加方便,Container而不必typename每次都说