diff --git a/libcxx/include/__format/concepts.h b/libcxx/include/__format/concepts.h index fe4a7b9625ce3..ba8d8e316226d 100644 --- a/libcxx/include/__format/concepts.h +++ b/libcxx/include/__format/concepts.h @@ -66,9 +66,8 @@ concept formattable = __formattable<_Tp, _CharT>; // TODO FMT Add a test to validate we fail when using that concept after P2165 // has been implemented. template -concept __fmt_pair_like = __is_specialization_v<_Tp, pair> || - // Use a requires since tuple_size_v may fail to instantiate, - (__is_specialization_v<_Tp, tuple> && requires { tuple_size_v<_Tp> == 2; }); +concept __fmt_pair_like = + __is_specialization_v<_Tp, pair> || (__is_specialization_v<_Tp, tuple> && tuple_size_v<_Tp> == 2); # endif //_LIBCPP_STD_VER > 20 #endif //_LIBCPP_STD_VER > 17 diff --git a/libcxx/test/std/utilities/format/format.range/format.range.fmtset/format.functions.tests.h b/libcxx/test/std/utilities/format/format.range/format.range.fmtset/format.functions.tests.h index a884ba7ec8585..cd0bc5ad1d81e 100644 --- a/libcxx/test/std/utilities/format/format.range/format.range.fmtset/format.functions.tests.h +++ b/libcxx/test/std/utilities/format/format.range/format.range.fmtset/format.functions.tests.h @@ -1260,7 +1260,7 @@ void test_tuple_int(TestFunction check, ExceptionTest check_exception) { check(SV("__(42), (99)___"), SV("{:_^15n}"), input); // *** type *** - check(SV("__{(42), (99)}___"), SV("{:_^17m}"), input); + check_exception("The range-format-spec type m requires two elements for a pair or tuple", SV("{:m}"), input); check_exception("The range-format-spec type s requires formatting a character type", SV("{:s}"), input); check_exception("The range-format-spec type ?s requires formatting a character type", SV("{:?s}"), input); @@ -1366,7 +1366,7 @@ void test_tuple_int_int_int(TestFunction check, ExceptionTest check_exception) { check(SV("__(1, 10, 100), (42, 99, 0)___"), SV("{:_^30n}"), input); // *** type *** - check(SV("__{(1, 10, 100), (42, 99, 0)}___"), SV("{:_^32m}"), input); + check_exception("The range-format-spec type m requires two elements for a pair or tuple", SV("{:m}"), input); check_exception("The range-format-spec type s requires formatting a character type", SV("{:s}"), input); check_exception("The range-format-spec type ?s requires formatting a character type", SV("{:?s}"), input); diff --git a/libcxx/test/std/utilities/format/format.range/format.range.formatter/format.functions.tests.h b/libcxx/test/std/utilities/format/format.range/format.range.formatter/format.functions.tests.h index a465916afa10e..cdd39e6945221 100644 --- a/libcxx/test/std/utilities/format/format.range/format.range.formatter/format.functions.tests.h +++ b/libcxx/test/std/utilities/format/format.range/format.range.formatter/format.functions.tests.h @@ -1083,7 +1083,7 @@ void test_tuple_int(TestFunction check, ExceptionTest check_exception) { check(SV("__(42), (99)___"), SV("{:_^15n}"), input); // *** type *** - check(SV("__{(42), (99)}___"), SV("{:_^17m}"), input); + check_exception("The range-format-spec type m requires two elements for a pair or tuple", SV("{:m}"), input); check_exception("The range-format-spec type s requires formatting a character type", SV("{:s}"), input); check_exception("The range-format-spec type ?s requires formatting a character type", SV("{:?s}"), input); for (std::basic_string_view fmt : fmt_invalid_types("s")) @@ -1184,7 +1184,7 @@ void test_tuple_int_int_int(TestFunction check, ExceptionTest check_exception) { check(SV("__(42, 99, 0), (1, 10, 100)___"), SV("{:_^30n}"), input); // *** type *** - check(SV("__{(42, 99, 0), (1, 10, 100)}___"), SV("{:_^32m}"), input); + check_exception("The range-format-spec type m requires two elements for a pair or tuple", SV("{:m}"), input); check_exception("The range-format-spec type s requires formatting a character type", SV("{:s}"), input); check_exception("The range-format-spec type ?s requires formatting a character type", SV("{:?s}"), input); for (std::basic_string_view fmt : fmt_invalid_types("s"))