https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111272
Bug ID: 111272 Summary: Truncated error messages with -std=c++23 and -std=c++26 Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: pkeir at outlook dot com Target Milestone: --- The C++14 code below requires the `constexpr` specifier on the `ft` member function. Compiling this with `-std=c++14`, `-std=c++17` or `-std=c++20` will provide a helpful error message which identifies the need to add the `constexpr` specifier to `ft`. However, if `-std=c++23`, or `-std=c++26` are used, no message indicating the need for `constexpr` on `ft` is displayed; and the message itself is truncated: ending only in "...not usable as a 'constexpr' function because:". struct Jam { // constexpr // n.b. int ft() { return 42; } constexpr Jam() { ft(); } }; constexpr bool test() { Jam j; return true; } static_assert(test(), ""); The full truncated error message is: $ /opt/gcc-latest/bin/g++ -std=c++26 -c truncated-constexpr-error-gcc.cpp truncated-constexpr-error-gcc.cpp:16:19: error: non-constant condition for static assertion 16 | static_assert(test(), ""); | ~~~~^~ truncated-constexpr-error-gcc.cpp:16:19: in ‘constexpr’ expansion of ‘test()’ truncated-constexpr-error-gcc.cpp:12:7: error: ‘constexpr Jam::Jam()’ called in a constant expression 12 | Jam j; | ^ truncated-constexpr-error-gcc.cpp:7:3: note: ‘constexpr Jam::Jam()’ is not usable as a ‘constexpr’ function because: 7 | Jam() { ft(); } | ^~~