`P2278R4_views_as_const`: Clang 22 emits error: satisfaction of constraint '`__is_constructible(_Ty, _ArgTys...)`' depends on itself
Open
Nobody has claimed this yet.
compiler
ranges
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 1.7k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 22
Description
Accepted by MSVC and Clang 20, rejected by Clang 22, I don't know why yet:
D:\GitHub\STL\out\x64>clang-cl -v
clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\Llvm\x64\bin
D:\GitHub\STL\out\x64>clang-cl /EHsc /nologo /W4 /std:c++latest -Wno-unqualified-std-cast-call ..\..\tests\std\tests\P2278R4_views_as_const\test.cpp /I ..\..\tests\std\include
In file included from ..\..\tests\std\tests\P2278R4_views_as_const\test.cpp:4:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\algorithm:10:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\__msvc_heap_algorithms.hpp:11:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility:11:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\__msvc_iter_core.hpp:10:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\utility:15:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\compare:14:
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(91,51): error:
satisfaction of constraint '__is_constructible(_Ty, _ArgTys...)' depends on itself
91 | concept constructible_from = destructible<_Ty> && __is_constructible(_Ty, _ArgTys...);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(100,30): note: while
checking the satisfaction of concept 'constructible_from<std::ranges::as_const_view<std::span<const int>>>'
requested here
100 | concept move_constructible = constructible_from<_Ty, _Ty> && convertible_to<_Ty, _Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,39): note: while
checking the satisfaction of concept 'move_constructible<std::ranges::as_const_view<std::span<const int>>>'
requested here
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: while
checking the satisfaction of concept 'movable<std::ranges::as_const_view<std::span<const int>>>' requested here
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3906,27): note: while
checking the satisfaction of concept 'view<std::ranges::as_const_view<std::span<const int>>>' requested here
3906 | static_assert(view<_Derived>,
| ^~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3984,50): note: in
instantiation of member function 'std::ranges::view_interface<std::ranges::as_const_view<std::span<const
int>>>::_Cast' requested here
3984 | return _STD to_address(_RANGES begin(_Cast()));
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3494,40): note:
(skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
3494 | { _STD _Fake_copy_init(__t.data()) } -> _Points_to_object;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(100,30): note: while
checking the satisfaction of concept 'constructible_from<R>' requested here
100 | concept move_constructible = constructible_from<_Ty, _Ty> && convertible_to<_Ty, _Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,39): note: while
checking the satisfaction of concept 'move_constructible<R>' requested here
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: while
checking the satisfaction of concept 'movable<R>' requested here
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^~~~~~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(48,19): note: while checking the satisfaction of concept 'view<R>'
requested here
48 | static_assert(ranges::view<R>);
| ^~~~~~~~~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(635,23): note: in instantiation of function template
specialization 'test_one<const std::span<const int> &, const int (&)[6]>' requested here
635 | static_assert(test_one(s, some_ints));
| ^
Click to expand more errors:
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(48,19): error: static assertion failed
48 | static_assert(ranges::view<R>);
| ^~~~~~~~~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(635,23): note: in instantiation of function template
specialization 'test_one<const std::span<const int> &, const int (&)[6]>' requested here
635 | static_assert(test_one(s, some_ints));
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(48,19): note: because 'R' (aka 'as_const_view<std::span<const int,
18446744073709551615>>') does not satisfy 'view'
48 | static_assert(ranges::view<R>);
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: because
'R' (aka 'as_const_view<std::span<const int, 18446744073709551615>>') does not satisfy 'movable'
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,96): note: because
'std::ranges::as_const_view<std::span<const int>>' does not satisfy 'swappable'
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(159,52): note: because
'::std::ranges::swap(__x, __y)' would be invalid: no matching function for call to object of type
'const _Swap::_Cpo'
159 | concept swappable = requires(_Ty& __x, _Ty& __y) { _RANGES swap(__x, __y); };
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\yvals_core.h(1908,17): note:
expanded from macro '_RANGES'
1908 | #define _RANGES ::std::ranges::
| ^
In file included from ..\..\tests\std\tests\P2278R4_views_as_const\test.cpp:4:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\algorithm:10:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\__msvc_heap_algorithms.hpp:11:
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3915,27): error: static
assertion failed: view_interface's template argument must model the view concept
(N4950 [view.interface.general]/2).
3915 | static_assert(view<_Derived>,
| ^~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3924,27): note: in
instantiation of member function 'std::ranges::view_interface<std::ranges::as_const_view<std::span<const
int>>>::_Cast' requested here
3924 | auto& _Self = _Cast();
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(322,18): note: in instantiation of member function
'std::ranges::view_interface<std::ranges::as_const_view<std::span<const int>>>::empty' requested here
322 | assert(r.empty() == is_empty);
| ^
C:\Program Files (x86)\Windows Kits\10\include\10.0.28000.0\ucrt\assert.h(40,17): note: expanded from macro 'assert'
40 | (!!(expression)) || \
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(635,23): note: in instantiation of function template
specialization 'test_one<const std::span<const int> &, const int (&)[6]>' requested here
635 | static_assert(test_one(s, some_ints));
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3915,27): note: because
'R' (aka 'as_const_view<std::span<const int, 18446744073709551615>>') does not satisfy 'view'
3915 | static_assert(view<_Derived>,
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: because
'R' (aka 'as_const_view<std::span<const int, 18446744073709551615>>') does not satisfy 'movable'
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,96): note: because
'std::ranges::as_const_view<std::span<const int>>' does not satisfy 'swappable'
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(159,52): note: because
'::std::ranges::swap(__x, __y)' would be invalid: no matching function for call to object of type
'const _Swap::_Cpo'
159 | concept swappable = requires(_Ty& __x, _Ty& __y) { _RANGES swap(__x, __y); };
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\yvals_core.h(1908,17): note:
expanded from macro '_RANGES'
1908 | #define _RANGES ::std::ranges::
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(635,23): error: static assertion expression is not an integral
constant expression
635 | static_assert(test_one(s, some_ints));
| ^~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3984,50): note:
subexpression not valid in a constant expression
3984 | return _STD to_address(_RANGES begin(_Cast()));
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(504,91): note: in call to 'r.data()'
504 | const same_as<const remove_reference_t<ranges::range_reference_t<V>>*> auto ptr = r.data();
| ^~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(635,23): note: in call to 'test_one<const std::span<const int> &,
const int (&)[6]>(s, some_ints)'
635 | static_assert(test_one(s, some_ints));
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from ..\..\tests\std\tests\P2278R4_views_as_const\test.cpp:4:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\algorithm:10:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\__msvc_heap_algorithms.hpp:11:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility:11:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\__msvc_iter_core.hpp:10:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\utility:15:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\compare:14:
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(91,51): error:
satisfaction of constraint '__is_constructible(_Ty, _ArgTys...)' depends on itself
91 | concept constructible_from = destructible<_Ty> && __is_constructible(_Ty, _ArgTys...);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(100,30): note: while
checking the satisfaction of concept 'constructible_from<std::ranges::as_const_view<std::span<int>>>' requested
here
100 | concept move_constructible = constructible_from<_Ty, _Ty> && convertible_to<_Ty, _Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,39): note: while
checking the satisfaction of concept 'move_constructible<std::ranges::as_const_view<std::span<int>>>' requested
here
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: while
checking the satisfaction of concept 'movable<std::ranges::as_const_view<std::span<int>>>' requested here
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3906,27): note: while
checking the satisfaction of concept 'view<std::ranges::as_const_view<std::span<int>>>' requested here
3906 | static_assert(view<_Derived>,
| ^~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3984,50): note: in
instantiation of member function 'std::ranges::view_interface<std::ranges::as_const_view<std::span<int>>>::_Cast'
requested here
3984 | return _STD to_address(_RANGES begin(_Cast()));
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3494,40): note:
(skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
3494 | { _STD _Fake_copy_init(__t.data()) } -> _Points_to_object;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(100,30): note: while
checking the satisfaction of concept 'constructible_from<R>' requested here
100 | concept move_constructible = constructible_from<_Ty, _Ty> && convertible_to<_Ty, _Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,39): note: while
checking the satisfaction of concept 'move_constructible<R>' requested here
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: while
checking the satisfaction of concept 'movable<R>' requested here
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^~~~~~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(48,19): note: while checking the satisfaction of concept 'view<R>'
requested here
48 | static_assert(ranges::view<R>);
| ^~~~~~~~~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(700,23): note: in instantiation of function template
specialization 'test_one<std::span<int>, std::span<int>>' requested here
700 | static_assert(test_one(Span{}, Span{}));
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(48,19): error: static assertion failed
48 | static_assert(ranges::view<R>);
| ^~~~~~~~~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(700,23): note: in instantiation of function template
specialization 'test_one<std::span<int>, std::span<int>>' requested here
700 | static_assert(test_one(Span{}, Span{}));
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(48,19): note: because 'R' (aka 'as_const_view<std::span<int,
18446744073709551615>>') does not satisfy 'view'
48 | static_assert(ranges::view<R>);
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: because
'R' (aka 'as_const_view<std::span<int, 18446744073709551615>>') does not satisfy 'movable'
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,96): note: because
'std::ranges::as_const_view<std::span<int>>' does not satisfy 'swappable'
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(159,52): note: because
'::std::ranges::swap(__x, __y)' would be invalid: no matching function for call to object of type
'const _Swap::_Cpo'
159 | concept swappable = requires(_Ty& __x, _Ty& __y) { _RANGES swap(__x, __y); };
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\yvals_core.h(1908,17): note:
expanded from macro '_RANGES'
1908 | #define _RANGES ::std::ranges::
| ^
In file included from ..\..\tests\std\tests\P2278R4_views_as_const\test.cpp:4:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\algorithm:10:
In file included from C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\__msvc_heap_algorithms.hpp:11:
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3915,27): error: static
assertion failed: view_interface's template argument must model the view concept
(N4950 [view.interface.general]/2).
3915 | static_assert(view<_Derived>,
| ^~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3924,27): note: in
instantiation of member function 'std::ranges::view_interface<std::ranges::as_const_view<std::span<int>>>::_Cast'
requested here
3924 | auto& _Self = _Cast();
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(322,18): note: in instantiation of member function
'std::ranges::view_interface<std::ranges::as_const_view<std::span<int>>>::empty' requested here
322 | assert(r.empty() == is_empty);
| ^
C:\Program Files (x86)\Windows Kits\10\include\10.0.28000.0\ucrt\assert.h(40,17): note: expanded from macro 'assert'
40 | (!!(expression)) || \
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(700,23): note: in instantiation of function template
specialization 'test_one<std::span<int>, std::span<int>>' requested here
700 | static_assert(test_one(Span{}, Span{}));
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3915,27): note: because
'R' (aka 'as_const_view<std::span<int, 18446744073709551615>>') does not satisfy 'view'
3915 | static_assert(view<_Derived>,
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3590,34): note: because
'R' (aka 'as_const_view<std::span<int, 18446744073709551615>>') does not satisfy 'movable'
3590 | concept view = range<_Ty> && movable<_Ty> && enable_view<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(231,96): note: because
'std::ranges::as_const_view<std::span<int>>' does not satisfy 'swappable'
231 | concept movable = is_object_v<_Ty> && move_constructible<_Ty> && assignable_from<_Ty&, _Ty> && swappable<_Ty>;
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\concepts(159,52): note: because
'::std::ranges::swap(__x, __y)' would be invalid: no matching function for call to object of type
'const _Swap::_Cpo'
159 | concept swappable = requires(_Ty& __x, _Ty& __y) { _RANGES swap(__x, __y); };
| ^
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\yvals_core.h(1908,17): note:
expanded from macro '_RANGES'
1908 | #define _RANGES ::std::ranges::
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(700,23): error: static assertion expression is not an integral
constant expression
700 | static_assert(test_one(Span{}, Span{}));
| ^~~~~~~~~~~~~~~~~~~~~~~~
C:\Program Files\Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.52.36405\include\xutility(3984,50): note:
subexpression not valid in a constant expression
3984 | return _STD to_address(_RANGES begin(_Cast()));
| ^
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(504,91): note: in call to 'r.data()'
504 | const same_as<const remove_reference_t<ranges::range_reference_t<V>>*> auto ptr = r.data();
| ^~~~~~~~
..\..\tests\std\tests\P2278R4_views_as_const\test.cpp(700,23): note: in call to 'test_one<std::span<int>,
std::span<int>>(Span{}, Span{})'
700 | static_assert(test_one(Span{}, Span{}));
| ^~~~~~~~~~~~~~~~~~~~~~~~
8 errors generated.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with the clang-cl command against tests/std/tests/P2278R4_views_as_const/test.cpp, starting at line 48 and the instantiation near line 635. Inspect the reported concepts and xutility paths to determine why as_const_view is not recognized as movable by Clang 22. Done means this test passes with Clang 22 without regressing the existing MSVC and Clang 20 behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 50/100