10 Ranges library [ranges]

10.6 Range requirements [ranges.requirements]

10.6.9 Bidirectional ranges [ranges.bidirectional]

The BidirectionalRange concept specifies requirements of a ForwardRange type for which begin returns a type that satisfies BidirectionalIterator ([iterators.bidirectional]).

template <class T>
concept bool BidirectionalRange =
  ForwardRange<T> && BidirectionalIterator<iterator_t<T>>;