【发布时间】:2021-09-03 21:14:04
【问题描述】:
我看了std::random_access_iterator 和其他迭代器概念
这就是 GCC 实现的样子
template<typename _Iter>
concept random_access_iterator = bidirectional_iterator<_Iter>
&& derived_from<__detail::__iter_concept<_Iter>,
random_access_iterator_tag>
&& totally_ordered<_Iter> && sized_sentinel_for<_Iter, _Iter>
&& requires(_Iter __i, const _Iter __j,
const iter_difference_t<_Iter> __n)
{
{ __i += __n } -> same_as<_Iter&>;
{ __j + __n } -> same_as<_Iter>;
{ __n + __j } -> same_as<_Iter>;
{ __i -= __n } -> same_as<_Iter&>;
{ __j - __n } -> same_as<_Iter>;
{ __j[__n] } -> same_as<iter_reference_t<_Iter>>;
};
__iter_concept<_Iter> 是怎么派生出来的from random_access_iterator_tag 的?
【问题讨论】:
标签: c++ variadic-templates c++20 c++-concepts