begin.cc:4:30: error: no match for call to ‘(const std::ranges::__cust_access::_Begin) (S&)’ 4 | auto x = std::ranges::begin(s); | ^ In file included from /home/patrick/code/gcc-master/libstdc++-v3/include/std/string:54, from /home/patrick/code/gcc-master/libstdc++-v3/include/bits/locale_classes.h:40, from /home/patrick/code/gcc-master/libstdc++-v3/include/bits/ios_base.h:41, from /home/patrick/code/gcc-master/libstdc++-v3/include/std/streambuf:41, from /home/patrick/code/gcc-master/libstdc++-v3/include/bits/streambuf_iterator.h:35, from /home/patrick/code/gcc-master/libstdc++-v3/include/std/iterator:66, from /home/patrick/code/gcc-master/libstdc++-v3/include/std/ranges:44, from begin.cc:1: /home/patrick/code/gcc-master/libstdc++-v3/include/bits/range_access.h:418:2: note: candidate: ‘constexpr auto std::ranges::__cust_access::_Begin::operator()(_Tp&&) const [with _Tp = S&]’ 418 | operator()(_Tp&& __t) const noexcept(_S_noexcept<_Tp>()) | ^~~~~~~~ /home/patrick/code/gcc-master/libstdc++-v3/include/bits/range_access.h:418:2: note: constraints not satisfied begin.cc: In instantiation of ‘constexpr auto std::ranges::__cust_access::_Begin::operator()(_Tp&&) const [with _Tp = S&]’: begin.cc:4:30: required from here /home/patrick/code/gcc-master/libstdc++-v3/include/bits/range_access.h:418:2: required by the constraints of ‘template<class _Tp> requires (__maybe_borrowed_range<_Tp>) && ((is_array_v<typename std::remove_reference<_Tp>::type>) || (__member_begin<_Tp>) || (__adl_begin<_Tp>)) constexpr auto std::ranges::__cust_access::_Begin::operator()(_Tp&&) const’ /home/patrick/code/gcc-master/libstdc++-v3/include/bits/range_access.h:416:4: note: no operand of the disjunction is satisfied 415 | requires is_array_v<remove_reference_t<_Tp>> || __member_begin<_Tp> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 416 | || __adl_begin<_Tp> | ^~~~~~~~~~~~~~~~~~~ cc1plus: note: set -fconcepts-diagnostics-depth= to at least 2 for more detail