Skip to content

C++20 ranges/views are broken, via std::ranges::ref_view - iterator_concepts.h:980:13: error: no matching function for call to '__begin' #52696

Closed as not planned
@db-src

Description

@db-src

It seems that range view adaptors don't work. The following example of trying to use ranges gives a pile of errors, seemingly related to ref_view being broken.

#include <algorithm>
#include <iostream>
#include <ranges>

static auto
odd(int const i)
{
    return (i & 1) == 1;
}
 
static auto
print(int const i)
{
    std::cout << i;
}

auto
main() -> int
{
    int const thenumbers[]{4, 8, 15, 16, 23, 42};
    std::ranges::for_each(thenumbers | std::views::filter(odd), print);
}

This is available on Compiler Explorer running Clang x86-64 trunk here: https://godbolt.org/z/7abh7rzaP - but the same happens in released version 13 there and on Debian

The same is true of the simple (recently edited, now compliant) example code from https://en.cppreference.com/w/cpp/ranges/transform_view ...

#include <algorithm>
#include <cstdio>
#include <iterator>
#include <ranges>
#include <string>
 
char rot13a(const char x, const char a)
{
    return a + (x - a + 13) % 26;
}
 
char rot13(const char x)
{
    if (x >= 'A' && x <= 'Z') {
        return rot13a(x, 'A');
    }
 
    if (x >= 'a' && x <= 'z') {
        return rot13a(x, 'a');
    }
 
    return x;
}
 
int main()
{
    auto show = [](const unsigned char x) { std::putchar(x); };
 
    std::string in{ "cppreference.com\n" };
    std::ranges::for_each(in, show);
    std::ranges::for_each(in | std::views::transform(rot13), show);
 
    std::string out;
    std::ranges::copy( std::views::transform(in, rot13), std::back_inserter(out) );
    std::ranges::for_each(out, show);
    std::ranges::for_each(out | std::views::transform(rot13), show);
}

... as can be seen on Compiler Explorer running Clang x86-64 trunk here - https://godbolt.org/z/xzdzjxaj4 ...

These are the errors from the 1st example:

In file included from <source>:1:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/algorithm:60:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/stl_algobase.h:65:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/stl_iterator_base_types.h:71:
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:982:13: error: no matching function for call to '__begin'
        = decltype(ranges::__cust_access::__begin(std::declval<_Tp&>()));
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:595:5: note: in instantiation of template type alias '__range_iter_t' requested here
    using iterator_t = std::__detail::__range_iter_t<_Tp>;
    ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:121:36: note: in instantiation of template type alias 'iterator_t' requested here
      requires contiguous_iterator<iterator_t<_Derived>>
                                   ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1097:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::ref_view<const int[6]>>' requested here
    class ref_view : public view_interface<ref_view<_Range>>
                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of template class 'std::ranges::ref_view<const int[6]>' requested here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of requirement here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:27: note: (skipping 20 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                 ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:9: note: while substituting template arguments into constraint expression here
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while checking the satisfaction of concept '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' requested here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while substituting template arguments into constraint expression here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:21:38: note: while checking constraint satisfaction for template 'operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' required here
    std::ranges::for_each(thenumbers | std::views::filter(odd), print);
                                     ^
<source>:21:38: note: in instantiation of function template specialization 'std::ranges::views::__adaptor::operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' requested here
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:966:7: note: candidate template ignored: constraints not satisfied [with _Tp = std::ranges::ref_view<const int[6]>]
      __begin(_Tp& __t)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:16: note: because 'is_array_v<std::ranges::ref_view<const int[6]> >' evaluated to false
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:35: note: and 'std::ranges::ref_view<const int[6]> &' does not satisfy '__member_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:947:23: note: because '__decay_copy(__t.begin())' would be invalid: no member named 'begin' in 'std::ranges::ref_view<const int[6]>'
          { __decay_copy(__t.begin()) } -> input_or_output_iterator;
                             ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:59: note: and 'std::ranges::ref_view<const int[6]> &' does not satisfy '__adl_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                                          ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:958:19: note: because '__decay_copy(begin(__t))' would be invalid: call to deleted function 'begin'
          { __decay_copy(begin(__t)) } -> input_or_output_iterator;
                         ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:982:13: error: no matching function for call to '__begin'
        = decltype(ranges::__cust_access::__begin(std::declval<_Tp&>()));
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:595:5: note: in instantiation of template type alias '__range_iter_t' requested here
    using iterator_t = std::__detail::__range_iter_t<_Tp>;
    ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:127:25: note: in instantiation of template type alias 'iterator_t' requested here
        && contiguous_iterator<iterator_t<const _Derived>>
                               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1097:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::ref_view<const int[6]>>' requested here
    class ref_view : public view_interface<ref_view<_Range>>
                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of template class 'std::ranges::ref_view<const int[6]>' requested here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of requirement here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:27: note: (skipping 20 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                 ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:9: note: while substituting template arguments into constraint expression here
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while checking the satisfaction of concept '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' requested here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while substituting template arguments into constraint expression here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:21:38: note: while checking constraint satisfaction for template 'operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' required here
    std::ranges::for_each(thenumbers | std::views::filter(odd), print);
                                     ^
<source>:21:38: note: in instantiation of function template specialization 'std::ranges::views::__adaptor::operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' requested here
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:966:7: note: candidate template ignored: constraints not satisfied [with _Tp = const std::ranges::ref_view<const int[6]>]
      __begin(_Tp& __t)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:16: note: because 'is_array_v<const std::ranges::ref_view<const int[6]> >' evaluated to false
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:35: note: and 'const std::ranges::ref_view<const int[6]> &' does not satisfy '__member_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:947:23: note: because '__decay_copy(__t.begin())' would be invalid: no member named 'begin' in 'std::ranges::ref_view<const int[6]>'
          { __decay_copy(__t.begin()) } -> input_or_output_iterator;
                             ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:59: note: and 'const std::ranges::ref_view<const int[6]> &' does not satisfy '__adl_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                                          ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:958:19: note: because '__decay_copy(begin(__t))' would be invalid: call to deleted function 'begin'
          { __decay_copy(begin(__t)) } -> input_or_output_iterator;
                         ^
In file included from <source>:1:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/algorithm:63:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_algo.h:36:
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:133:24: error: constraints not satisfied for alias template 'sentinel_t' [with _Range = std::ranges::ref_view<const int[6]>]
        && sized_sentinel_for<sentinel_t<_Derived>, iterator_t<_Derived>>
                              ^~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1097:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::ref_view<const int[6]>>' requested here
    class ref_view : public view_interface<ref_view<_Range>>
                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of template class 'std::ranges::ref_view<const int[6]>' requested here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of requirement here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:27: note: while substituting template arguments into constraint expression here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1173:7: note: while checking the satisfaction of concept '__can_ref_view<const int (&)[6]>' requested here
          || __detail::__can_ref_view<_Range>
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1173:17: note: (skipping 18 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
          || __detail::__can_ref_view<_Range>
                       ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:9: note: while substituting template arguments into constraint expression here
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while checking the satisfaction of concept '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' requested here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while substituting template arguments into constraint expression here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:21:38: note: while checking constraint satisfaction for template 'operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' required here
    std::ranges::for_each(thenumbers | std::views::filter(odd), print);
                                     ^
<source>:21:38: note: in instantiation of function template specialization 'std::ranges::views::__adaptor::operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, const int (&)[6]>' requested here
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:597:12: note: because 'std::ranges::ref_view<const int[6]>' does not satisfy 'range'
  template<range _Range>
           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:585:2: note: because 'ranges::begin(__t)' would be invalid: no matching function for call to object of type 'const __cust_access::_Begin'
        ranges::begin(__t);
        ^
In file included from <source>:1:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/algorithm:63:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_algo.h:36:
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:139:24: error: constraints not satisfied for alias template 'sentinel_t' [with _Range = const std::ranges::ref_view<const int[6]>]
        && sized_sentinel_for<sentinel_t<const _Derived>,
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:597:12: note: because 'const std::ranges::ref_view<const int[6]>' does not satisfy 'range'
  template<range _Range>
           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:585:2: note: because 'ranges::begin(__t)' would be invalid: no matching function for call to object of type 'const __cust_access::_Begin'
        ranges::begin(__t);
        ^
<source>:21:38: error: invalid operands to binary expression ('const int[6]' and '_Partial<std::ranges::views::_Filter, decay_t<bool (&)(int)>>' (aka '_Partial<std::ranges::views::_Filter, bool (*)(int)>'))
    std::ranges::for_each(thenumbers | std::views::filter(odd), print);
                          ~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:858:7: note: candidate template ignored: constraints not satisfied [with _Self = std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>, _Range = const int (&)[6]]
      operator|(_Range&& __r, _Self&& __self)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: because '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, _Bool (*)(int)>, const int (&)[6]>' evaluated to false
        && __adaptor_invocable<_Self, _Range>
           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:20: note: because 'std::declval<_Adaptor>()(declval<_Args>()...)' would be invalid: no matching function for call to object of type 'std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>'
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
                   ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:867:7: note: candidate template ignored: constraints not satisfied [with _Lhs = const int *, _Rhs = std::ranges::views::__adaptor::_Partial<std::ranges::views::_Filter, bool (*)(int)>]
      operator|(_Lhs __lhs, _Rhs __rhs)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:864:16: note: because 'derived_from<const int *, std::ranges::views::__adaptor::_RangeAdaptorClosure>' evaluated to false
      requires derived_from<_Lhs, _RangeAdaptorClosure>
               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/concepts:67:28: note: because '__is_base_of(std::ranges::views::__adaptor::_RangeAdaptorClosure, const int *)' evaluated to false
    concept derived_from = __is_base_of(_Base, _Derived)
                           ^
5 errors generated.
Compiler returned: 1

and 2nd:

In file included from <source>:1:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/algorithm:60:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/stl_algobase.h:65:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/stl_iterator_base_types.h:71:
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:982:13: error: no matching function for call to '__begin'
        = decltype(ranges::__cust_access::__begin(std::declval<_Tp&>()));
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:595:5: note: in instantiation of template type alias '__range_iter_t' requested here
    using iterator_t = std::__detail::__range_iter_t<_Tp>;
    ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:121:36: note: in instantiation of template type alias 'iterator_t' requested here
      requires contiguous_iterator<iterator_t<_Derived>>
                                   ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1097:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::ref_view<std::basic_string<char>>>' requested here
    class ref_view : public view_interface<ref_view<_Range>>
                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of template class 'std::ranges::ref_view<std::basic_string<char>>' requested here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of requirement here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:27: note: (skipping 20 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                 ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:9: note: while substituting template arguments into constraint expression here
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while checking the satisfaction of concept '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' requested here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while substituting template arguments into constraint expression here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:31:30: note: while checking constraint satisfaction for template 'operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' required here
    std::ranges::for_each(in | std::views::transform(rot13), show);
                             ^
<source>:31:30: note: in instantiation of function template specialization 'std::ranges::views::__adaptor::operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' requested here
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:966:7: note: candidate template ignored: constraints not satisfied [with _Tp = std::ranges::ref_view<std::basic_string<char>>]
      __begin(_Tp& __t)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:16: note: because 'is_array_v<std::ranges::ref_view<std::basic_string<char> > >' evaluated to false
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:35: note: and 'std::ranges::ref_view<std::basic_string<char>> &' does not satisfy '__member_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:947:23: note: because '__decay_copy(__t.begin())' would be invalid: no member named 'begin' in 'std::ranges::ref_view<std::basic_string<char>>'
          { __decay_copy(__t.begin()) } -> input_or_output_iterator;
                             ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:59: note: and 'std::ranges::ref_view<std::basic_string<char>> &' does not satisfy '__adl_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                                          ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:958:19: note: because '__decay_copy(begin(__t))' would be invalid: call to deleted function 'begin'
          { __decay_copy(begin(__t)) } -> input_or_output_iterator;
                         ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:982:13: error: no matching function for call to '__begin'
        = decltype(ranges::__cust_access::__begin(std::declval<_Tp&>()));
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:595:5: note: in instantiation of template type alias '__range_iter_t' requested here
    using iterator_t = std::__detail::__range_iter_t<_Tp>;
    ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:127:25: note: in instantiation of template type alias 'iterator_t' requested here
        && contiguous_iterator<iterator_t<const _Derived>>
                               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1097:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::ref_view<std::basic_string<char>>>' requested here
    class ref_view : public view_interface<ref_view<_Range>>
                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of template class 'std::ranges::ref_view<std::basic_string<char>>' requested here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of requirement here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:27: note: (skipping 20 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                 ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:9: note: while substituting template arguments into constraint expression here
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while checking the satisfaction of concept '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' requested here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while substituting template arguments into constraint expression here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:31:30: note: while checking constraint satisfaction for template 'operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' required here
    std::ranges::for_each(in | std::views::transform(rot13), show);
                             ^
<source>:31:30: note: in instantiation of function template specialization 'std::ranges::views::__adaptor::operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' requested here
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:966:7: note: candidate template ignored: constraints not satisfied [with _Tp = const std::ranges::ref_view<std::basic_string<char>>]
      __begin(_Tp& __t)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:16: note: because 'is_array_v<const std::ranges::ref_view<std::basic_string<char> > >' evaluated to false
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:35: note: and 'const std::ranges::ref_view<std::basic_string<char>> &' does not satisfy '__member_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:947:23: note: because '__decay_copy(__t.begin())' would be invalid: no member named 'begin' in 'std::ranges::ref_view<std::basic_string<char>>'
          { __decay_copy(__t.begin()) } -> input_or_output_iterator;
                             ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:964:59: note: and 'const std::ranges::ref_view<std::basic_string<char>> &' does not satisfy '__adl_begin'
      requires is_array_v<_Tp> || __member_begin<_Tp&> || __adl_begin<_Tp&>
                                                          ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/iterator_concepts.h:958:19: note: because '__decay_copy(begin(__t))' would be invalid: call to deleted function 'begin'
          { __decay_copy(begin(__t)) } -> input_or_output_iterator;
                         ^
In file included from <source>:1:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/algorithm:63:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_algo.h:36:
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:133:24: error: constraints not satisfied for alias template 'sentinel_t' [with _Range = std::ranges::ref_view<std::basic_string<char>>]
        && sized_sentinel_for<sentinel_t<_Derived>, iterator_t<_Derived>>
                              ^~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1097:29: note: in instantiation of template class 'std::ranges::view_interface<std::ranges::ref_view<std::basic_string<char>>>' requested here
    class ref_view : public view_interface<ref_view<_Range>>
                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of template class 'std::ranges::ref_view<std::basic_string<char>>' requested here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:38: note: in instantiation of requirement here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1151:27: note: while substituting template arguments into constraint expression here
        concept __can_ref_view = requires { ref_view{std::declval<_Range>()}; };
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1173:7: note: while checking the satisfaction of concept '__can_ref_view<std::basic_string<char> &>' requested here
          || __detail::__can_ref_view<_Range>
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1173:17: note: (skipping 18 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
          || __detail::__can_ref_view<_Range>
                       ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:9: note: while substituting template arguments into constraint expression here
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while checking the satisfaction of concept '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' requested here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: while substituting template arguments into constraint expression here
        && __adaptor_invocable<_Self, _Range>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:31:30: note: while checking constraint satisfaction for template 'operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' required here
    std::ranges::for_each(in | std::views::transform(rot13), show);
                             ^
<source>:31:30: note: in instantiation of function template specialization 'std::ranges::views::__adaptor::operator|<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' requested here
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:597:12: note: because 'std::ranges::ref_view<std::basic_string<char>>' does not satisfy 'range'
  template<range _Range>
           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:585:2: note: because 'ranges::begin(__t)' would be invalid: no matching function for call to object of type 'const __cust_access::_Begin'
        ranges::begin(__t);
        ^
In file included from <source>:1:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/algorithm:63:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_algo.h:36:
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_util.h:139:24: error: constraints not satisfied for alias template 'sentinel_t' [with _Range = const std::ranges::ref_view<std::basic_string<char>>]
        && sized_sentinel_for<sentinel_t<const _Derived>,
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:597:12: note: because 'const std::ranges::ref_view<std::basic_string<char>>' does not satisfy 'range'
  template<range _Range>
           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ranges_base.h:585:2: note: because 'ranges::begin(__t)' would be invalid: no matching function for call to object of type 'const __cust_access::_Begin'
        ranges::begin(__t);
        ^
<source>:31:30: error: invalid operands to binary expression ('std::string' (aka 'basic_string<char>') and '_Partial<std::ranges::views::_Transform, decay_t<char (&)(char)>>' (aka '_Partial<std::ranges::views::_Transform, char (*)(char)>'))
    std::ranges::for_each(in | std::views::transform(rot13), show);
                          ~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ios_base.h:87:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::_Ios_Fmtflags' for 1st argument
  operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ios_base.h:130:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::_Ios_Openmode' for 1st argument
  operator|(_Ios_Openmode __a, _Ios_Openmode __b)
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ios_base.h:170:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::_Ios_Iostate' for 1st argument
  operator|(_Ios_Iostate __a, _Ios_Iostate __b)
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/cstddef:132:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::byte' for 1st argument
  operator|(byte __l, byte __r) noexcept
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:858:7: note: candidate template ignored: constraints not satisfied [with _Self = std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, _Range = std::basic_string<char> &]
      operator|(_Range&& __r, _Self&& __self)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: because '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' evaluated to false
        && __adaptor_invocable<_Self, _Range>
           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:20: note: because 'std::declval<_Adaptor>()(declval<_Args>()...)' would be invalid: no matching function for call to object of type 'std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>'
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
                   ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:867:7: note: candidate template ignored: constraints not satisfied [with _Lhs = std::basic_string<char>, _Rhs = std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>]
      operator|(_Lhs __lhs, _Rhs __rhs)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:864:16: note: because 'derived_from<std::basic_string<char>, std::ranges::views::__adaptor::_RangeAdaptorClosure>' evaluated to false
      requires derived_from<_Lhs, _RangeAdaptorClosure>
               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/concepts:67:28: note: because '__is_base_of(std::ranges::views::__adaptor::_RangeAdaptorClosure, std::basic_string<char>)' evaluated to false
    concept derived_from = __is_base_of(_Base, _Derived)
                           ^
<source>:34:24: error: no matching function for call to object of type 'const std::ranges::views::_Transform'
    std::ranges::copy( std::views::transform(in, rot13), std::back_inserter(out) );
                       ^~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1975:2: note: candidate template ignored: constraints not satisfied [with _Range = std::basic_string<char> &, _Fp = char (&)(char)]
        operator() [[nodiscard]] (_Range&& __r, _Fp&& __f) const
        ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1973:21: note: because '__detail::__can_transform_view<std::basic_string<char> &, char (&)(char)>' evaluated to false
        requires __detail::__can_transform_view<_Range, _Fp>
                           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:1967:17: note: because 'transform_view(std::declval<_Range>(), std::declval<_Fp>())' would be invalid: no viable constructor or deduction guide for deduction of template arguments of 'transform_view'
          = requires { transform_view(std::declval<_Range>(), std::declval<_Fp>()); };
                       ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:890:2: note: candidate template ignored: constraints not satisfied [with _Args = <std::basic_string<char> &, char (&)(char)>]
        operator()(_Args&&... __args) const
        ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:888:11: note: because '__adaptor_partial_app_viable<std::ranges::views::_Transform, std::basic_string<char> &, char (&)(char)>' evaluated to false
        requires __adaptor_partial_app_viable<_Derived, _Args...>
                 ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:837:11: note: because 'sizeof...(_Args) == _Transform::_S_arity - 1' (2 == 1) evaluated to false
      && (sizeof...(_Args) == _Adaptor::_S_arity - 1)
          ^
<source>:36:31: error: invalid operands to binary expression ('std::string' (aka 'basic_string<char>') and '_Partial<std::ranges::views::_Transform, decay_t<char (&)(char)>>' (aka '_Partial<std::ranges::views::_Transform, char (*)(char)>'))
    std::ranges::for_each(out | std::views::transform(rot13), show);
                          ~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ios_base.h:87:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::_Ios_Fmtflags' for 1st argument
  operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ios_base.h:130:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::_Ios_Openmode' for 1st argument
  operator|(_Ios_Openmode __a, _Ios_Openmode __b)
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/bits/ios_base.h:170:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::_Ios_Iostate' for 1st argument
  operator|(_Ios_Iostate __a, _Ios_Iostate __b)
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/cstddef:132:3: note: candidate function not viable: no known conversion from 'std::string' (aka 'basic_string<char>') to 'std::byte' for 1st argument
  operator|(byte __l, byte __r) noexcept
  ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:858:7: note: candidate template ignored: constraints not satisfied [with _Self = std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, _Range = std::basic_string<char> &]
      operator|(_Range&& __r, _Self&& __self)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:856:5: note: because '__adaptor_invocable<std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>, std::basic_string<char> &>' evaluated to false
        && __adaptor_invocable<_Self, _Range>
           ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:831:20: note: because 'std::declval<_Adaptor>()(declval<_Args>()...)' would be invalid: no matching function for call to object of type 'std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>'
      = requires { std::declval<_Adaptor>()(declval<_Args>()...); };
                   ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:867:7: note: candidate template ignored: constraints not satisfied [with _Lhs = std::basic_string<char>, _Rhs = std::ranges::views::__adaptor::_Partial<std::ranges::views::_Transform, char (*)(char)>]
      operator|(_Lhs __lhs, _Rhs __rhs)
      ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/ranges:864:16: note: because 'derived_from<std::basic_string<char>, std::ranges::views::__adaptor::_RangeAdaptorClosure>' evaluated to false
      requires derived_from<_Lhs, _RangeAdaptorClosure>
               ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/12.0.0/../../../../include/c++/12.0.0/concepts:67:28: note: because '__is_base_of(std::ranges::views::__adaptor::_RangeAdaptorClosure, std::basic_string<char>)' evaluated to false
    concept derived_from = __is_base_of(_Base, _Derived)
                           ^
7 errors generated.
Compiler returned: 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang:frontendLanguage frontend issues, e.g. anything involving "Sema"conceptsC++20 conceptsduplicateResolved as duplicate

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions