From 35000c65470792aed3a3c23a3b3fc45db4bec2c4 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Sat, 13 Jan 2024 12:13:33 +0000 Subject: [PATCH] libstdc++: Use variable template to fix -fconcepts-ts error [PR113366] There's an error for -fconcepts-ts due to using a concept where a bool NTTP is required, which is fixed by using the vraiable template that already exists in the class scope. This doesn't fix the problem with -fconcepts-ts as changes to the placement of attributes is also needed. libstdc++-v3/ChangeLog: PR testsuite/113366 * include/std/format (basic_format_arg): Use __formattable variable template instead of __format::__formattable_with concept. (cherry picked from commit 6c703b4eb68cbc32de1d62e5b573cb1b9857af29) --- libstdc++-v3/include/std/format | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format index d5ca962423cf..401503e895c4 100644 --- a/libstdc++-v3/include/std/format +++ b/libstdc++-v3/include/std/format @@ -2847,8 +2847,7 @@ namespace __format // Format as const if possible, to reduce instantiations. template using __maybe_const_t - = __conditional_t<__format::__formattable_with<_Tp, _Context>, - const _Tp, _Tp>; + = __conditional_t<__formattable<_Tp>, const _Tp, _Tp>; template static void @@ -2866,7 +2865,7 @@ namespace __format explicit handle(_Tp& __val) noexcept { - if constexpr (!__format::__formattable_with) + if constexpr (!__formattable) static_assert(!is_const_v<_Tp>, "std::format argument must be " "non-const for this type"); -- 2.47.2