Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/ranges
Show All 29 Lines | namespace std::ranges { | ||||
// [range.range], ranges | // [range.range], ranges | ||||
template<class T> | template<class T> | ||||
concept range = see below; | concept range = see below; | ||||
template<class T> | template<class T> | ||||
inline constexpr bool enable_borrowed_range = false; | inline constexpr bool enable_borrowed_range = false; | ||||
template<class T> | template<class R> | ||||
using iterator_t = decltype(ranges::begin(declval<T&>())); | using iterator_t = decltype(ranges::begin(declval<R&>())); | ||||
Quuxplusone: No, `T` was correct. https://eel.is/c++draft/ranges#syn
It's noteworthy that `iterator_t` is… | |||||
template<class T> | |||||
using iterator_t = decltype(ranges::begin(declval<T&>())); | |||||
template<range R> | template<range R> | ||||
using sentinel_t = decltype(ranges::end(declval<R&>())); | using sentinel_t = decltype(ranges::end(declval<R&>())); | ||||
template<range R> | template<range R> | ||||
using range_difference_t = iter_difference_t<iterator_t<R>>; | using range_difference_t = iter_difference_t<iterator_t<R>>; | ||||
template<sized_range R> | |||||
using range_size_t = decltype(ranges::size(declval<R&>())); | |||||
template<range R> | template<range R> | ||||
using range_value_t = iter_value_t<iterator_t<R>>; | using range_value_t = iter_value_t<iterator_t<R>>; | ||||
template<range R> | template<range R> | ||||
using range_reference_t = iter_reference_t<iterator_t<R>>; | using range_reference_t = iter_reference_t<iterator_t<R>>; | ||||
template<range R> | template<range R> | ||||
using range_rvalue_reference_t = iter_rvalue_reference_t<iterator_t<R>>; | using range_rvalue_reference_t = iter_rvalue_reference_t<iterator_t<R>>; | ||||
// [range.sized], sized ranges | // [range.sized], sized ranges | ||||
▲ Show 20 Lines • Show All 147 Lines • Show Last 20 Lines |
No, T was correct. https://eel.is/c++draft/ranges#syn
It's noteworthy that iterator_t is not constrained — class T is correct, not range T. I don't know why.