【问题标题】:Question about template's value_type usage in Stroustrup's book example关于 Stroustrup 书籍示例中模板 value_type 使用的问题
【发布时间】:2020-12-01 00:29:04
【问题描述】:

在 Stroustrup 的《A Tour of C++》中有一段代码 sn-p

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;

【问题讨论】:

    标签: c++ c++11 templates generic-programming


    【解决方案1】:

    原因是这样的声明:

    Vector<Container::value_type> vec;
    

    实际上是无效的,并且是一个错误。相反,您需要编写:

    Vector<typename Container::value_type> vec;
    

    这更冗长。

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

    【讨论】:

      最近更新 更多