我正在围绕迭代器编写一个小包装器,我的代码最终看起来像这样:
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
两次,例如通过定义本地类型?template<class Iterator, class ValueType=typename std::remove_reference<Iterator>::type::value_type>
class Class: public Superclass<ValueType> {
public:
等等