Skip to content

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

@StephanTLavavej

Description

@StephanTLavavej

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    compilerCompiler work involvedrangesC++20/23 ranges

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions