C++ 类模板:定义超类参数化和 value_type 定义中使用的类型

问题描述 投票:0回答:1

我正在围绕迭代器编写一个小包装器,我的代码最终看起来像这样:

template <typename Iterator>
class Class: public Superclass<typename std::remove_reference<Iterator>::type::value_type> {
public:
   using value_type = typename std::remove_reference<Iterator>::type::value_type;

   explicit Class(Iterator&& iterator);

protected:
   Iterator iterator;
};

类可以使用右值的 const 引用来构造,因此我在调用

std::remove_reference
后访问元素的类型,并使用此类型来参数化超类并定义
value_type

有没有办法避免写
typename std::remove_reference<Iterator>::type::value_type
两次,例如通过定义本地类型?
谢谢,
查理

c++ templates types
1个回答
1
投票
template<class Iterator, class ValueType=typename std::remove_reference<Iterator>::type::value_type>
class Class: public Superclass<ValueType> {
public:

等等

© www.soinside.com 2019 - 2024. All rights reserved.