diff --git a/stl/inc/__msvc_formatter.hpp b/stl/inc/__msvc_formatter.hpp index d1355eb20fc..8fa4c3017e4 100644 --- a/stl/inc/__msvc_formatter.hpp +++ b/stl/inc/__msvc_formatter.hpp @@ -401,11 +401,12 @@ constexpr bool enable_nonlocking_formatter_optimization constexpr bool enable_nonlocking_formatter_optimization> = - enable_nonlocking_formatter_optimization<_Ty1> && enable_nonlocking_formatter_optimization<_Ty2>; + enable_nonlocking_formatter_optimization> + && enable_nonlocking_formatter_optimization>; template constexpr bool enable_nonlocking_formatter_optimization> = - (enable_nonlocking_formatter_optimization<_Ts> && ...); + (enable_nonlocking_formatter_optimization> && ...); template struct _Fill_align_and_width_specs { diff --git a/tests/std/tests/P3107R5_enabled_specializations/test.compile.pass.cpp b/tests/std/tests/P3107R5_enabled_specializations/test.compile.pass.cpp index 53c28d0c0e2..2eed1af8c39 100644 --- a/tests/std/tests/P3107R5_enabled_specializations/test.compile.pass.cpp +++ b/tests/std/tests/P3107R5_enabled_specializations/test.compile.pass.cpp @@ -121,12 +121,29 @@ static_assert(enable_nonlocking_formatter_optimization); static_assert(enable_nonlocking_formatter_optimization); static_assert(enable_nonlocking_formatter_optimization); static_assert(enable_nonlocking_formatter_optimization); -static_assert(enable_nonlocking_formatter_optimization>); -static_assert(!enable_nonlocking_formatter_optimization>); -static_assert(!enable_nonlocking_formatter_optimization>); -static_assert(enable_nonlocking_formatter_optimization>); -static_assert(!enable_nonlocking_formatter_optimization>); -static_assert(!enable_nonlocking_formatter_optimization>); + +// Extended to test LWG-4399 "enable_nonlocking_formatter_optimization for pair and tuple needs remove_cvref_t" +template