diff --git a/libcxx/test/std/containers/container.adaptors/container.adaptors.format/parse.pass.cpp b/libcxx/test/std/containers/container.adaptors/container.adaptors.format/parse.pass.cpp index 136910b90c909..c47fb188c865c 100644 --- a/libcxx/test/std/containers/container.adaptors/container.adaptors.format/parse.pass.cpp +++ b/libcxx/test/std/containers/container.adaptors/container.adaptors.format/parse.pass.cpp @@ -27,10 +27,10 @@ #include #include #include +#include #include #include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -44,7 +44,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/containers/sequences/vector.bool/vector.bool.fmt/parse.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/vector.bool.fmt/parse.pass.cpp index c761039442196..abae40d78b23a 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/vector.bool.fmt/parse.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/vector.bool.fmt/parse.pass.cpp @@ -25,9 +25,9 @@ #include #include #include +#include #include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -41,7 +41,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/parse.pass.cpp b/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/parse.pass.cpp index 8523bc8949717..2e75606832b43 100644 --- a/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/parse.pass.cpp +++ b/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/parse.pass.cpp @@ -24,9 +24,9 @@ #include #include +#include #include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -40,7 +40,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.bool.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.bool.pass.cpp index efea2889ce3b5..116f78e63be09 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.bool.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.bool.pass.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "test_format_context.h" @@ -38,7 +39,8 @@ void test(StringT expected, StringViewT fmt, bool arg, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); StringT result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.c_string.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.c_string.pass.cpp index f363bc3032003..3125dd8b60bbd 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.c_string.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.c_string.pass.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "test_format_context.h" @@ -38,7 +39,8 @@ void test(StringT expected, StringViewT fmt, const CharT* a, std::size_t offset) static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); StringT result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.pass.cpp index 554def930020a..0723547c2df27 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.pass.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "test_format_context.h" @@ -39,7 +40,8 @@ void test(StringT expected, StringViewT fmt, ArgumentT arg, std::size_t offset) static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); StringT result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp index 295ba7f67bbc5..b0ee399a1c191 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "test_format_context.h" @@ -51,7 +52,8 @@ struct Tester { static_assert(std::semiregular); std::same_as::iterator> auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); std::basic_string result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp index 206b0214cf5fd..ed2614cd3af2b 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.floating_point.pass.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -49,7 +50,8 @@ void test(std::basic_string_view fmt, ArithmeticT arg, std::basic_string< static_assert(std::semiregular); std::same_as::iterator> auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); std::basic_string result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.handle.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.handle.pass.cpp index e2b3d6b3d2370..5921cc6efcecb 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.handle.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.handle.pass.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -43,7 +44,8 @@ void test(std::string expected, std::string_view fmt, color arg, std::size_t off static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); std::string result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.pointer.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.pointer.pass.cpp index aa10f34c95b79..408168e033bb6 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.pointer.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.pointer.pass.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -44,7 +45,8 @@ void test(StringT expected, StringViewT fmt, PointerT arg, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); StringT result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.signed_integral.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.signed_integral.pass.cpp index e5db5dac0c569..cdd56d1b882a0 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.signed_integral.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.signed_integral.pass.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "test_format_context.h" @@ -46,7 +47,8 @@ void test(StringT expected, StringViewT fmt, ArithmeticT arg, std::size_t offset static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); StringT result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.string.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.string.pass.cpp index 73df7464dcb7a..49f54dae26478 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.string.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.string.pass.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "make_string.h" @@ -46,7 +47,8 @@ void test(StringT expected, StringViewT fmt, StringT a, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); StringT result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.unsigned_integral.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.unsigned_integral.pass.cpp index eb70115bf5de5..a9537465faf9d 100644 --- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.unsigned_integral.pass.cpp +++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.unsigned_integral.pass.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "test_format_context.h" @@ -46,7 +47,8 @@ void test(StringT expected, StringViewT fmt, ArithmeticT arg, std::size_t offset static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); StringT result; auto out = std::back_inserter(result); diff --git a/libcxx/test/std/utilities/format/format.range/format.range.fmtdef/parse.pass.cpp b/libcxx/test/std/utilities/format/format.range/format.range.fmtdef/parse.pass.cpp index 9f9b4d4545a89..0eb984cc2c01a 100644 --- a/libcxx/test/std/utilities/format/format.range/format.range.fmtdef/parse.pass.cpp +++ b/libcxx/test/std/utilities/format/format.range/format.range.fmtdef/parse.pass.cpp @@ -22,8 +22,8 @@ #include #include #include +#include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -37,7 +37,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/utilities/format/format.range/format.range.fmtmap/parse.pass.cpp b/libcxx/test/std/utilities/format/format.range/format.range.fmtmap/parse.pass.cpp index daa92214845ba..99d6aa7452a02 100644 --- a/libcxx/test/std/utilities/format/format.range/format.range.fmtmap/parse.pass.cpp +++ b/libcxx/test/std/utilities/format/format.range/format.range.fmtmap/parse.pass.cpp @@ -25,8 +25,8 @@ #include #include #include +#include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -40,7 +40,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/utilities/format/format.range/format.range.fmtset/parse.pass.cpp b/libcxx/test/std/utilities/format/format.range/format.range.fmtset/parse.pass.cpp index 843855f4e6d07..182beff4bd168 100644 --- a/libcxx/test/std/utilities/format/format.range/format.range.fmtset/parse.pass.cpp +++ b/libcxx/test/std/utilities/format/format.range/format.range.fmtset/parse.pass.cpp @@ -24,9 +24,9 @@ #include #include #include +#include #include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -40,7 +40,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/utilities/format/format.range/format.range.fmtstr/parse.pass.cpp b/libcxx/test/std/utilities/format/format.range/format.range.fmtstr/parse.pass.cpp index 7acee9cb9dc51..3354de3472199 100644 --- a/libcxx/test/std/utilities/format/format.range/format.range.fmtstr/parse.pass.cpp +++ b/libcxx/test/std/utilities/format/format.range/format.range.fmtstr/parse.pass.cpp @@ -23,9 +23,9 @@ #include #include #include +#include #include "format.functions.tests.h" -#include "test_format_context.h" #include "test_macros.h" template @@ -36,7 +36,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/utilities/format/format.range/format.range.formatter/parse.pass.cpp b/libcxx/test/std/utilities/format/format.range/format.range.formatter/parse.pass.cpp index 87774c2620877..2d0cef11feb8c 100644 --- a/libcxx/test/std/utilities/format/format.range/format.range.formatter/parse.pass.cpp +++ b/libcxx/test/std/utilities/format/format.range/format.range.formatter/parse.pass.cpp @@ -25,8 +25,8 @@ #include #include #include +#include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -40,7 +40,8 @@ constexpr void test_parse(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template diff --git a/libcxx/test/std/utilities/format/format.tuple/parse.pass.cpp b/libcxx/test/std/utilities/format/format.tuple/parse.pass.cpp index 5cabbda63dd02..8653c282bfe10 100644 --- a/libcxx/test/std/utilities/format/format.tuple/parse.pass.cpp +++ b/libcxx/test/std/utilities/format/format.tuple/parse.pass.cpp @@ -24,10 +24,10 @@ #include #include #include +#include #include #include -#include "test_format_context.h" #include "test_macros.h" #include "make_string.h" @@ -41,7 +41,8 @@ constexpr void test(StringViewT fmt, std::size_t offset) { static_assert(std::semiregular); std::same_as auto it = formatter.parse(parse_ctx); - assert(it == fmt.end() - offset); + // std::to_address works around LWG3989 and MSVC STL's iterator debugging mechanism. + assert(std::to_address(it) == std::to_address(fmt.end()) - offset); } template