On 17/11/2019 02:07, Jonathan Wakely wrote:
This adds another chunk of the <ranges> header.
The changes from P1456R1 (Move-only views) and P1862R1 (Range adaptors
for non-copyable iterators) are included, but not the changes from
P1870R1 (forwarding-range<T> is too subtle).
The tests for subrange and iota_view are poor and should be improved.
At least with recent Clang trunk, with -std=c++2a this causes failures like
In file included from
gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/set:61:
gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/stl_set.h:1057:48:
error: default initialization of an object of const type 'const bool'
template<typename _Tp> inline constexpr bool __enable_view_impl;
^
In file included from
gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/set:62:
gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/stl_multiset.h:1045:48:
error: redefinition of '__enable_view_impl'
template<typename _Tp> inline constexpr bool __enable_view_impl;
^
gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/stl_set.h:1057:48:
note: previous definition is here
template<typename _Tp> inline constexpr bool __enable_view_impl;
^
and I'm not sure whether this is legal C++20 code that Clang is just not
capable of handling?