Use requires() expression for partial_range range_index_type()

A requires() expression is easier to read than the corresponding
template parameter expression.
This commit is contained in:
Kp 2022-10-09 23:15:20 +00:00
parent 229766e9cb
commit 921a17ebce

View file

@ -100,12 +100,15 @@ template <
/* If `range_type::index_type` is not defined, fail. /* If `range_type::index_type` is not defined, fail.
* If `range_type::index_type` is void, fail. * If `range_type::index_type` is void, fail.
*/ */
typename index_type = typename std::remove_reference<typename std::remove_reference<range_type>::type::index_type &>::type, typename index_type = typename std::remove_reference<typename std::remove_reference<range_type>::type::index_type &>::type>
/* If `range_type::index_type` is not a suitable argument to /* If `range_type::index_type` is not a suitable argument to
* range_type::operator[](), fail. * range_type::operator[](), fail.
*/ */
typename = decltype(std::declval<range_type &>().operator[](std::declval<index_type>())) requires(
> requires(range_type &r, index_type i) {
r.operator[](i);
}
)
index_type range_index_type(std::nullptr_t); index_type range_index_type(std::nullptr_t);
} }