https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117966
Bug ID: 117966 Summary: [12/13/14/15 regression] constexpr std::span construction fails to compile with D_GLIBCXX_DEBUG Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gnu.ojxq8 at dralias dot com Target Milestone: --- GCC-11 is fine, but any later version fails when running g++ /tmp/a.cpp -std=c++20 -D_GLIBCXX_DEBUG -o /tmp/a The file is: #include <array> #include <span> struct A { constexpr A(std::span<const unsigned char>) {} }; constexpr A val{std::array<unsigned char, 2>{0x11, 0x22}}; An error message may look like: <source>:6:22: in 'constexpr' expansion of 'std::span<const unsigned char>(std::array<unsigned char, 2>{std::__array_traits<unsigned char, 2>::_Type{17, 34}})' /opt/compiler-explorer/gcc-trunk-20241209/include/c++/15.0.0/span:207:57: in 'constexpr' expansion of '((std::span<const unsigned char>*)this)->std::span<const unsigned char>::span<const unsigned char*>((& __arr)->std::array<unsigned char, 2>::data(), 2)' /opt/compiler-explorer/gcc-trunk-20241209/include/c++/15.0.0/span:170:11: error: '__builtin_expect(((long int)(! __gnu_debug::__valid_range<const unsigned char*>(__first, (__first + ((sizetype)__count))))), 0)' is not a constant expression 170 | __glibcxx_requires_valid_range(__first, __first + __count); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Compiler returned: 1