1
shift_right()はC ++ 20でどのように実装される予定ですか?
C ++ 20では、<algorithm>ヘッダは、2つの新しいアルゴリズムを獲得:shift_left()およびshift_right()。どちらもLegacyForwardIteratorを受け入れます。についてはshift_left()、「iから開始する順番で移動する」と明記されている0。の場合shift_right()、「ForwardItLegacyBidirectionalIteratorの要件を満たしている場合、移動はi最初から降順で実行される」と指定されていますlast - first - n - 1。 私は実装するのにかなり簡単な方法を考えることができますshift_left(): template <typename ForwardIt> constexpr inline ForwardIt shift_left(ForwardIt first, ForwardIt last, typename std::iterator_traits<ForwardIt>::difference_type n) { if (n <= 0) return last; ForwardIt it = first; for (; n > 0; --n, ++it) { if (it == last) return first; } return …