解释 ITER_TRAITS 的 C++20 标准描述

ayu*_*.ab 6 c++ language-lawyer c++20

有人可以解释一下C++ 标准草案中iterator.concepts.general#1中的这一行的含义吗:

\n
\n

对于 type I,如果命名从主模板生成的专业化,则ITER_\xc2\xadTRAITS(I)表示该类型。否则,表示.Iiterator_\xc2\xadtraits<I>ITER_\xc2\xadTRAITS(I)iterator_\xc2\xadtraits<I>

\n
\n

Nic*_*las 4

iterator_traits<I>模板将填写类似value_typereference的相应成员的成员I。如果您的迭代器类型没有这些成员(例如,所有指针类型),您可以专门std::iterator_traits<your_iterator_type>提供这些成员,并在特征类中提供它们。

概念元功能ITER_TRAITS(I)代表了这一点。iterator_traits如果迭代器类型没有专门化I,那么它会从自身获取成员I。如果它是专门的,那么它会从 获取它们iterator_traits<I>