With clang 21 devel/catch fails to build, with errors similar to: /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/include/internal/catch_stringref.h:95:32: error: identifier '_sr' preceded by whitespace in a literal operator declaration is deprecated [-Werror,-Wdeprecated-literal-operator] 95 | constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { | ~~~~~~~~~~~~^~~ | operator""_sr /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/include/internal/catch_stringref.h:100:28: error: identifier '_catch_sr' preceded by whitespace in a literal operator declaration is deprecated [-Werror,-Wdeprecated-literal-operator] 100 | constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { | ~~~~~~~~~~~~^~~~~~~~~ | operator""_catch_sr /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/projects/SelfTest/IntrospectiveTests/String.tests.cpp:144:33: error: identifier '_sr' preceded by whitespace in a literal operator declaration is deprecated [-Werror,-Wdeprecated-literal-operator] 144 | using Catch::operator"" _sr; | ~~~~~~~~~~~^~~ | operator""_sr and later: /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/projects/SelfTest/UsageTests/ToStringVariant.tests.cpp:13:14: error: function 'operator=' could be declared with attribute 'noreturn' [-Werror,-Wmissing-noreturn] 13 | MyType1& operator=(MyType1 const&) { throw 3; } | ^ /wrkdirs/usr/ports/devel/catch/work/Catch2-2.13.10/projects/SelfTest/UsageTests/ToStringVariant.tests.cpp:18:14: error: function 'operator=' could be declared with attribute 'noreturn' [-Werror,-Wmissing-noreturn] 18 | MyType2& operator=(MyType2 const&) { throw 4; } | ^ The former can be fixed by removing the space between the identifier and the double quotes, the latter by declaring the functions with [[noreturn]].
Created attachment 268355 [details] devel/catch: fix build with clang 21
LGTM. Please name the patch file as patch-clang21. Thanks.