Bug#1001107: Info received (clang-13: clang++-13 has broken std::ranges::ref_view - iterator_concepts.h:980:13: error: no matching function for call to '__begin')
Daniel Boles
dboles.src at gmail.com
Sun Dec 5 10:39:46 GMT 2021
fixed example code:
--
#include <algorithm>
#include <cstdio>
#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 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);
}
errors:
--
In file included from tmp.cpp:1:
In file included from
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/algorithm:61:
In file included from
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_algobase.h:65:
In file included from
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_iterator_base_types.h:71:
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/iterator_concepts.h:980:13:
fatal error: no matching function for call to '__begin'
= decltype(ranges::__cust_access::__begin(std::declval<_Tp&>()));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/ranges_base.h:586:5:
note: in instantiation of template type alias '__range_iter_t' requested
here
using iterator_t = std::__detail::__range_iter_t<_Tp>;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/ranges_util.h:98:43:
note: in instantiation of template type alias 'iterator_t' requested here
data() requires contiguous_iterator<iterator_t<_Derived>>
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/ranges:1014: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>>
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/ranges:1070: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>()}; };
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/ranges:1070:38:
note: in instantiation of requirement here
concept __can_ref_view = requires {
ref_view{std::declval<_Range>()}; };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/ranges:1070: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>()}; };
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/ranges:748:9:
note: while substituting template arguments into constraint expression here
= requires { std::declval<_Adaptor>()(declval<_Args>()...); };
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/ranges:773: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>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/ranges:773:5:
note: while substituting template arguments into constraint expression here
&& __adaptor_invocable<_Self, _Range>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tmp.cpp:30: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);
^
tmp.cpp:30: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
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/iterator_concepts.h:964:7:
note: candidate template ignored: constraints not satisfied [with _Tp =
std::ranges::ref_view<std::basic_string<char>>]
__begin(_Tp& __t)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/iterator_concepts.h:962: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&>
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/iterator_concepts.h:962: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&>
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/iterator_concepts.h:945: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;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/iterator_concepts.h:962: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&>
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/iterator_concepts.h:956:19:
note: because '__decay_copy(begin(__t))' would be invalid: call to deleted
function 'begin'
{ __decay_copy(begin(__t)) } -> input_or_output_iterator;
^
1 error generated.
shell returned 1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-llvm-team/attachments/20211205/0f6da9b6/attachment.htm>
More information about the Pkg-llvm-team
mailing list