Skip to content

P2278R4_views_as_const: Clang 22 emits error: satisfaction of constraint '__is_constructible(_Ty, _ArgTys...)' depends on itself #6295

Description

Accepted by MSVC and Clang 20, rejected by Clang 22, I don't know why yet:

static_assert(ranges::view<R>);

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    compilerCompiler work involvedrangesC++20/23 ranges

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions