From 687e9ae7599795962cb6ecff2abdddadd0c658c8 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 18 Jan 2023 16:45:12 -0800 Subject: [PATCH 1/9] VS 2022 17.5 Preview 3. --- README.md | 4 ++-- azure-pipelines.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c9ff4548502..318b183524b 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem # How To Build With The Visual Studio IDE -1. Install Visual Studio 2022 17.5 Preview 2 or later. +1. Install Visual Studio 2022 17.5 Preview 3 or later. * Select "Windows 11 SDK (10.0.22000.0)" in the VS Installer. * We recommend selecting "C++ CMake tools for Windows" in the VS Installer. This will ensure that you're using supported versions of CMake and Ninja. @@ -157,7 +157,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem # How To Build With A Native Tools Command Prompt -1. Install Visual Studio 2022 17.5 Preview 2 or later. +1. Install Visual Studio 2022 17.5 Preview 3 or later. * Select "Windows 11 SDK (10.0.22000.0)" in the VS Installer. * We recommend selecting "C++ CMake tools for Windows" in the VS Installer. This will ensure that you're using supported versions of CMake and Ninja. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index ca0cab0669b..a4b3e3d3cc3 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,7 +9,7 @@ variables: benchmarkBuildOutputLocation: 'D:\benchmark' pool: - name: 'StlBuild-2023-01-10T1341-Pool' + name: 'StlBuild-2023-01-18T1600-Pool' demands: EnableSpotVM -equals true pr: From a697b16c9bc1f01b19ca613b5973004eae2c29ef Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 12 Jan 2023 18:16:32 -0800 Subject: [PATCH 2/9] Remove workarounds for VSO-1595465 "/clr /std:c++17 ICE with `int = 0` SFINAE". --- stl/inc/memory | 39 +++++---------------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/stl/inc/memory b/stl/inc/memory index 655f32c66ee..cd4c1292dd7 100644 --- a/stl/inc/memory +++ b/stl/inc/memory @@ -3242,33 +3242,18 @@ public: && is_convertible_v (*)[], element_type (*)[]>), int>; -#ifdef _M_CEE // TRANSITION, VSO-1595465 - template = 0, class = _Enable_ctor_reset<_Uty>> -#else // ^^^ workaround / no workaround vvv template = 0, _Enable_ctor_reset<_Uty> = 0> -#endif // ^^^ no workaround ^^^ - _CONSTEXPR23 explicit unique_ptr(_Uty _Ptr) noexcept : _Mypair(_Zero_then_variadic_args_t{}, _Ptr) { - } + _CONSTEXPR23 explicit unique_ptr(_Uty _Ptr) noexcept : _Mypair(_Zero_then_variadic_args_t{}, _Ptr) {} template , int> = 0, -#ifdef _M_CEE // TRANSITION, VSO-1595465 - class = _Enable_ctor_reset<_Uty>> -#else // ^^^ workaround / no workaround vvv _Enable_ctor_reset<_Uty> = 0> -#endif // ^^^ no workaround ^^^ - _CONSTEXPR23 unique_ptr(_Uty _Ptr, const _Dx& _Dt) noexcept : _Mypair(_One_then_variadic_args_t{}, _Dt, _Ptr) { - } + _CONSTEXPR23 unique_ptr(_Uty _Ptr, const _Dx& _Dt) noexcept : _Mypair(_One_then_variadic_args_t{}, _Dt, _Ptr) {} template >, is_constructible<_Dx2, _Dx2>>, int> = 0, -#ifdef _M_CEE // TRANSITION, VSO-1595465 - class = _Enable_ctor_reset<_Uty>> -#else // ^^^ workaround / no workaround vvv - _Enable_ctor_reset<_Uty> = 0> -#endif // ^^^ no workaround ^^^ + _Enable_ctor_reset<_Uty> = 0> _CONSTEXPR23 unique_ptr(_Uty _Ptr, _Dx&& _Dt) noexcept - : _Mypair(_One_then_variadic_args_t{}, _STD move(_Dt), _Ptr) { - } + : _Mypair(_One_then_variadic_args_t{}, _STD move(_Dt), _Ptr) {} template , is_constructible<_Dx2, remove_reference_t<_Dx2>>>, int> = 0> @@ -3296,22 +3281,12 @@ public: int>; template , is_same<_Ex, _Dx>, is_convertible<_Ex, _Dx>>>> -#else // ^^^ workaround / no workaround vvv _Enable_conversion<_Uty, _Ex, conditional_t, is_same<_Ex, _Dx>, is_convertible<_Ex, _Dx>>> = 0> -#endif // ^^^ no workaround ^^^ _CONSTEXPR23 unique_ptr(unique_ptr<_Uty, _Ex>&& _Right) noexcept - : _Mypair(_One_then_variadic_args_t{}, _STD forward<_Ex>(_Right.get_deleter()), _Right.release()) { - } + : _Mypair(_One_then_variadic_args_t{}, _STD forward<_Ex>(_Right.get_deleter()), _Right.release()) {} -#ifdef _M_CEE // TRANSITION, VSO-1595465 - template >> -#else // ^^^ workaround / no workaround vvv template > = 0> -#endif // ^^^ no workaround ^^^ _CONSTEXPR23 unique_ptr& operator=(unique_ptr<_Uty, _Ex>&& _Right) noexcept { reset(_Right.release()); _Mypair._Get_first() = _STD forward<_Ex>(_Right._Mypair._Get_first()); @@ -3365,11 +3340,7 @@ public: return _STD exchange(_Mypair._Myval2, nullptr); } -#ifdef _M_CEE // TRANSITION, VSO-1595465 - template > -#else // ^^^ workaround / no workaround vvv template = 0> -#endif // ^^^ no workaround ^^^ _CONSTEXPR23 void reset(_Uty _Ptr) noexcept { pointer _Old = _STD exchange(_Mypair._Myval2, _Ptr); if (_Old) { From b16b52923562761a45f96c75a6a755ad57ee663e Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 17 Jan 2023 14:41:19 -0800 Subject: [PATCH 3/9] Remove workaround for boostorg/math 853 "`bessel.hpp` and `gamma.hpp` emit MSVC `/analyze` warning C6326: Potential comparison of a constant with another constant." This was fixed in Boost 1.81. --- stl/src/special_math.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/stl/src/special_math.cpp b/stl/src/special_math.cpp index 0f17568aaef..c5b6350e028 100644 --- a/stl/src/special_math.cpp +++ b/stl/src/special_math.cpp @@ -9,7 +9,6 @@ #pragma warning(push) #pragma warning(disable : 4702) // unreachable code -#pragma warning(disable : 6326) // potential comparison of a constant with another constant #define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error From 59be0a12d03c4f8974e5f7891a12d0e81fa30780 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 17 Jan 2023 15:06:18 -0800 Subject: [PATCH 4/9] Drop /Za configs from GH_002030_asan_annotate_string/env.lst. The rest of these were dropped by GH 2714 on 2022-05-12, then this file was added by GH 2196 on 2022-05-16. --- tests/std/tests/GH_002030_asan_annotate_string/env.lst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/std/tests/GH_002030_asan_annotate_string/env.lst b/tests/std/tests/GH_002030_asan_annotate_string/env.lst index 6a1706876f4..77e8bff3fa5 100644 --- a/tests/std/tests/GH_002030_asan_annotate_string/env.lst +++ b/tests/std/tests/GH_002030_asan_annotate_string/env.lst @@ -29,8 +29,6 @@ PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive /fno-sanitize-ad PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- /fno-sanitize-address-vcasan-lib" PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /fp:strict /fno-sanitize-address-vcasan-lib" PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /fno-sanitize-address-vcasan-lib" -PM_CL="-fsanitize=address /Za /EHsc /MD /std:c++latest /permissive- /fno-sanitize-address-vcasan-lib" -PM_CL="-fsanitize=address /Za /EHsc /MDd /std:c++latest /permissive- /fno-sanitize-address-vcasan-lib" PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MD /std:c++14 /fno-sanitize-address-vcasan-lib" PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MDd /std:c++17 /permissive- /fno-sanitize-address-vcasan-lib" PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MT /std:c++20 /permissive- /fno-sanitize-address-vcasan-lib" @@ -53,8 +51,6 @@ PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive /fno-sanitize-ad PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- /fno-sanitize-address-vcasan-lib" PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive- /fp:strict /fno-sanitize-address-vcasan-lib" PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive- /fno-sanitize-address-vcasan-lib" -PM_CL="/D_ANNOTATE_STRING /Za /EHsc /MD /std:c++latest /permissive- /fno-sanitize-address-vcasan-lib" -PM_CL="/D_ANNOTATE_STRING /Za /EHsc /MDd /std:c++latest /permissive- /fno-sanitize-address-vcasan-lib" # TRANSITION, clang-cl does not support /alternatename so we cannot test /D_ANNOTATE_STRING without -fsanitize=address PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++17" From 3bfd9d509a8440af3475254f6d263380013b61db Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 17 Jan 2023 15:24:48 -0800 Subject: [PATCH 5/9] Drop the STL_BUILD_BENCHMARKING message. This machinery was removed by GH 3151 on 2022-10-24, and we don't need to worry about anyone following the old instructions now. --- CMakeLists.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3df16f10e25..599067f005e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,12 +50,6 @@ set(VCLIBS_SUFFIX "_oss" CACHE STRING "suffix for built DLL names to avoid confl option(STL_USE_ANALYZE "Pass the /analyze flag to MSVC" OFF) -if(STL_BUILD_BENCHMARKING) - message(WARNING "Due to issues with building google benchmark, " - "STL_BUILD_BENCHMARKING is no longer allowed as part of the STL build. " - "Instead, build the `benchmarks` directory with the STL_BINARY_DIR option.") -endif() - if("${VCLIBS_TARGET_ARCHITECTURE}" MATCHES "^x86$") set(VCLIBS_TARGET_ARCHITECTURE "x86") set(VCLIBS_I386_OR_AMD64 "i386") From 3270286e74b9d91e19873eb644750ab024a3b4cc Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 18 Jan 2023 18:19:55 -0800 Subject: [PATCH 6/9] Remove some VSO-1674140 (attempt to access expired storage) workarounds. --- .../tests/P0980R1_constexpr_strings/test.cpp | 54 ------------- .../tests/P1004R2_constexpr_vector/test.cpp | 78 +++---------------- 2 files changed, 12 insertions(+), 120 deletions(-) diff --git a/tests/std/tests/P0980R1_constexpr_strings/test.cpp b/tests/std/tests/P0980R1_constexpr_strings/test.cpp index a12fc460d32..3045b3e38a0 100644 --- a/tests/std/tests/P0980R1_constexpr_strings/test.cpp +++ b/tests/std/tests/P0980R1_constexpr_strings/test.cpp @@ -238,9 +238,6 @@ template constexpr bool test_interface() { using str = basic_string; -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // constructors // range constructors str literal_constructed{get_literal_input()}; @@ -296,9 +293,6 @@ constexpr bool test_interface() { assert(equalRanges(conversion_start_length_constructed, "llo"sv)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // allocator constructors allocator alloc; @@ -347,9 +341,6 @@ constexpr bool test_interface() { assert(equalRanges(conversion_start_length_constructed, "llo"sv)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // assignment operator str literal_constructed = get_literal_input(); @@ -380,9 +371,6 @@ constexpr bool test_interface() { assert(equalRanges(conversion_assigned, literal_constructed)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // assign str literal_constructed = get_literal_input(); @@ -499,9 +487,6 @@ constexpr bool test_interface() { assert(char_traits::length(cs) == literal_constructed.size()); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // iterators str literal_constructed = get_literal_input(); const str const_literal_constructed = get_literal_input(); @@ -752,9 +737,6 @@ constexpr bool test_interface() { assert(pushed.back() == CharType{'y'}); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // append const str literal_constructed = get_literal_input(); @@ -800,9 +782,6 @@ constexpr bool test_interface() { assert(equalRanges(append_conversion_start_length, "bbllo"sv)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // operator+= str literal_constructed = get_literal_input(); @@ -1105,9 +1084,6 @@ constexpr bool test_interface() { assert(equalRanges(copy_count_pos, "fluffy"sv)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // resize str resized = get_literal_input(); resized.resize(3); @@ -1753,9 +1729,6 @@ constexpr bool test_iterators() { cit = cit2; } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // op-> basic_string> bs{CharType{'x'}}; auto it = bs.begin(); @@ -1767,9 +1740,6 @@ constexpr bool test_iterators() { assert(cc == CharType{'x'}); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // increment auto it = literal_constructed.begin(); assert(*++it == CharType{'e'}); @@ -1801,9 +1771,6 @@ constexpr bool test_iterators() { assert(*cit == CharType{'f'}); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // decrement auto it = literal_constructed.end(); assert(*--it == CharType{'s'}); @@ -1996,12 +1963,6 @@ constexpr bool test_growth() { template constexpr void test_copy_ctor() { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (is_constant_evaluated()) { - return; - } -#endif // ^^^ workaround ^^^ - using Str = basic_string, StationaryAlloc>; { // Allocated @@ -2025,12 +1986,6 @@ constexpr void test_copy_ctor() { template constexpr void test_copy_alloc_ctor(const size_t id1, const size_t id2) { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (is_constant_evaluated()) { - return; - } -#endif // ^^^ workaround ^^^ - using Str = basic_string, StationaryAlloc>; { // Allocated @@ -2054,12 +2009,6 @@ constexpr void test_copy_alloc_ctor(const size_t id1, const size_t id2) { template constexpr void test_copy_assign(const size_t id1, const size_t id2, const size_t id3) { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (is_constant_evaluated()) { - return; - } -#endif // ^^^ workaround ^^^ - using Str = basic_string, Alloc>; { // Allocated to SSO @@ -2282,9 +2231,6 @@ constexpr void test_swap(const size_t id1, const size_t id2) { assert(rhs.get_allocator().id() == id1); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // Allocated to Allocated Str lhs(get_view_input(), Alloc{id1}); Str rhs(get_view_input(), Alloc{id2}); diff --git a/tests/std/tests/P1004R2_constexpr_vector/test.cpp b/tests/std/tests/P1004R2_constexpr_vector/test.cpp index 6df906b517b..98bef2b20a0 100644 --- a/tests/std/tests/P1004R2_constexpr_vector/test.cpp +++ b/tests/std/tests/P1004R2_constexpr_vector/test.cpp @@ -75,62 +75,30 @@ constexpr bool test_interface() { size_value_constructed.begin(), size_value_constructed.end(), [](const int val) { return val == 7; })); vec range_constructed(begin(input), end(input)); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert(equal(range_constructed.begin(), range_constructed.end(), begin(input), end(input))); - } + assert(equal(range_constructed.begin(), range_constructed.end(), begin(input), end(input))); vec initializer_list_constructed({2, 3, 4, 5}); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert(equal(initializer_list_constructed.begin(), initializer_list_constructed.end(), begin(input) + 2, - end(input))); - } + assert(equal( + initializer_list_constructed.begin(), initializer_list_constructed.end(), begin(input) + 2, end(input))); // special member functions vec default_constructed; assert(default_constructed.empty()); vec copy_constructed(size_default_constructed); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert(equal(copy_constructed.begin(), copy_constructed.end(), size_default_constructed.begin(), - size_default_constructed.end())); - } + assert(equal(copy_constructed.begin(), copy_constructed.end(), size_default_constructed.begin(), + size_default_constructed.end())); vec move_constructed(move(copy_constructed)); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert(equal(move_constructed.begin(), move_constructed.end(), size_default_constructed.begin(), - size_default_constructed.end())); - } + assert(equal(move_constructed.begin(), move_constructed.end(), size_default_constructed.begin(), + size_default_constructed.end())); assert(copy_constructed.empty()); // implementation-specific assumption that moved-from is empty vec copy_assigned = range_constructed; -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert( - equal(copy_assigned.begin(), copy_assigned.end(), range_constructed.begin(), range_constructed.end())); - } + assert(equal(copy_assigned.begin(), copy_assigned.end(), range_constructed.begin(), range_constructed.end())); vec move_assigned = move(copy_assigned); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert( - equal(move_assigned.begin(), move_assigned.end(), range_constructed.begin(), range_constructed.end())); - } + assert(equal(move_assigned.begin(), move_assigned.end(), range_constructed.begin(), range_constructed.end())); assert(copy_assigned.empty()); // implementation-specific assumption that moved-from is empty // allocator constructors @@ -169,30 +137,17 @@ constexpr bool test_interface() { assert(al_size_value_constructed.get_allocator().soccc_generation == 3); vec al_range_constructed(begin(input), end(input), alloc); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert(equal(al_range_constructed.begin(), al_range_constructed.end(), begin(input), end(input))); - } + assert(equal(al_range_constructed.begin(), al_range_constructed.end(), begin(input), end(input))); assert(al_range_constructed.get_allocator().id == 4); assert(al_range_constructed.get_allocator().soccc_generation == 3); vec al_initializer_list_constructed({2, 3, 4, 5}, alloc); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - assert(equal(al_initializer_list_constructed.begin(), al_initializer_list_constructed.end(), - begin(input) + 2, end(input))); - } + assert(equal(al_initializer_list_constructed.begin(), al_initializer_list_constructed.end(), begin(input) + 2, + end(input))); assert(al_initializer_list_constructed.get_allocator().id == 4); assert(al_initializer_list_constructed.get_allocator().soccc_generation == 3); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // assignment vec range_constructed(begin(input), end(input)); @@ -234,9 +189,6 @@ constexpr bool test_interface() { assert(alloc.soccc_generation == 0); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // iterators vec range_constructed(begin(input), end(input)); const vec const_range_constructed(begin(input), end(input)); @@ -526,9 +478,6 @@ constexpr bool test_interface() { constexpr bool test_iterators() { vec range_constructed(begin(input), end(input)); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // increment auto it = range_constructed.begin(); assert(*++it == 1); @@ -556,9 +505,6 @@ constexpr bool test_iterators() { assert(*cit == 4); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ { // decrement auto it = range_constructed.end(); assert(*--it == 5); From c099588c5b13847b93428906bda128d50d270225 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 18 Jan 2023 18:19:33 -0800 Subject: [PATCH 7/9] Update VSO-1674140 citations to VSO-1726722; both are (attempt to access expired storage). --- .../tests/P0980R1_constexpr_strings/test.cpp | 32 ++++++++-------- .../tests/P1004R2_constexpr_vector/test.cpp | 16 ++++---- .../P1004R2_constexpr_vector_bool/test.cpp | 38 +++++++++---------- .../tests/P2321R2_proxy_reference/test.cpp | 2 +- .../test.cpp | 2 +- 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/tests/std/tests/P0980R1_constexpr_strings/test.cpp b/tests/std/tests/P0980R1_constexpr_strings/test.cpp index 3045b3e38a0..8d8cf25b2ee 100644 --- a/tests/std/tests/P0980R1_constexpr_strings/test.cpp +++ b/tests/std/tests/P0980R1_constexpr_strings/test.cpp @@ -608,7 +608,7 @@ constexpr bool test_interface() { assert(cleared.capacity() == str{get_literal_input()}.capacity()); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // insert @@ -688,7 +688,7 @@ constexpr bool test_interface() { assert(equalRanges(insert_iter_count_char, "Hellooooo fluffy kittens"sv)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // erase @@ -967,7 +967,7 @@ constexpr bool test_interface() { } #endif // _HAS_CXX23 -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // replace @@ -1059,7 +1059,7 @@ constexpr bool test_interface() { assert(equalRanges(replaced_pos_count_conversion_pos_count, "dfluffy"sv)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // substr @@ -1558,7 +1558,7 @@ constexpr bool test_interface() { assert(find_last_not_of_convertible_pos == str::npos); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // operator+ @@ -1690,7 +1690,7 @@ constexpr bool test_interface() { } constexpr bool test_udls() { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (is_constant_evaluated()) { return true; } @@ -1752,7 +1752,7 @@ constexpr bool test_iterators() { assert(*cit == CharType{'l'}); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // advance @@ -1783,7 +1783,7 @@ constexpr bool test_iterators() { assert(*cit == CharType{'n'}); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // advance back @@ -1828,7 +1828,7 @@ constexpr bool test_iterators() { assert((it3 <=> it1) == strong_ordering::greater); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // access @@ -1886,7 +1886,7 @@ constexpr bool test_growth() { assert(v.capacity() == 1510); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -1903,7 +1903,7 @@ constexpr bool test_growth() { assert(v.capacity() == 1510); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -1924,7 +1924,7 @@ constexpr bool test_growth() { } } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -1939,7 +1939,7 @@ constexpr bool test_growth() { assert(v.capacity() == 1510); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -2059,7 +2059,7 @@ constexpr void test_copy_assign(const size_t id1, const size_t id2, const size_t template constexpr void test_move_ctor() { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (is_constant_evaluated()) { return; } @@ -2093,7 +2093,7 @@ constexpr void test_move_ctor() { template constexpr void test_move_alloc_ctor(const size_t id1, const size_t id2) { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (is_constant_evaluated()) { return; } @@ -2127,7 +2127,7 @@ constexpr void test_move_alloc_ctor(const size_t id1, const size_t id2) { template constexpr void test_move_assign(const size_t id1, const size_t id2, const size_t id3) { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (is_constant_evaluated()) { return; } diff --git a/tests/std/tests/P1004R2_constexpr_vector/test.cpp b/tests/std/tests/P1004R2_constexpr_vector/test.cpp index 98bef2b20a0..225dd5c9295 100644 --- a/tests/std/tests/P1004R2_constexpr_vector/test.cpp +++ b/tests/std/tests/P1004R2_constexpr_vector/test.cpp @@ -428,7 +428,7 @@ constexpr bool test_interface() { assert(equal(second.begin(), second.end(), begin(expected_second), end(expected_second))); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // erase @@ -490,7 +490,7 @@ constexpr bool test_iterators() { assert(*cit == 2); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // advance @@ -517,7 +517,7 @@ constexpr bool test_iterators() { assert(*cit == 4); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // advance back @@ -558,7 +558,7 @@ constexpr bool test_iterators() { assert(it3 >= it1); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // access @@ -625,7 +625,7 @@ constexpr bool test_growth() { vector l(3, 47); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -644,7 +644,7 @@ constexpr bool test_growth() { vector l(7000, 47); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -661,7 +661,7 @@ constexpr bool test_growth() { assert(v.size() == 1000); assert(v.capacity() == 1000); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -678,7 +678,7 @@ constexpr bool test_growth() { assert(v.size() == 1000); assert(v.capacity() == 1000); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { diff --git a/tests/std/tests/P1004R2_constexpr_vector_bool/test.cpp b/tests/std/tests/P1004R2_constexpr_vector_bool/test.cpp index e4d3466bc1a..e08db425527 100644 --- a/tests/std/tests/P1004R2_constexpr_vector_bool/test.cpp +++ b/tests/std/tests/P1004R2_constexpr_vector_bool/test.cpp @@ -101,7 +101,7 @@ constexpr bool test_interface() { // Non allocator constructors vec size_default_constructed(5); assert(size_default_constructed.size() == 5); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -111,7 +111,7 @@ constexpr bool test_interface() { vec size_value_constructed(5, true); assert(size_value_constructed.size() == 5); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -119,7 +119,7 @@ constexpr bool test_interface() { size_value_constructed.begin(), size_value_constructed.end(), [](const bool val) { return val; })); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -144,7 +144,7 @@ constexpr bool test_interface() { vec default_constructed; assert(default_constructed.empty()); vec copy_constructed(size_default_constructed); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -153,7 +153,7 @@ constexpr bool test_interface() { } vec move_constructed(move(copy_constructed)); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -173,7 +173,7 @@ constexpr bool test_interface() { assert(al_default_constructed.get_allocator().soccc_generation == 3); vec al_copy_constructed(size_value_constructed, alloc); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -183,7 +183,7 @@ constexpr bool test_interface() { assert(al_copy_constructed.get_allocator().soccc_generation == 3); vec al_move_constructed(move(al_copy_constructed), alloc); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -195,7 +195,7 @@ constexpr bool test_interface() { vec al_size_default_constructed(5, alloc); assert(al_size_default_constructed.size() == 5); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -207,7 +207,7 @@ constexpr bool test_interface() { vec al_size_value_constructed(5, true, alloc); assert(al_size_value_constructed.size() == 5); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -217,7 +217,7 @@ constexpr bool test_interface() { assert(al_size_value_constructed.get_allocator().id == 4); assert(al_size_value_constructed.get_allocator().soccc_generation == 3); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -234,7 +234,7 @@ constexpr bool test_interface() { } } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // assignment @@ -278,7 +278,7 @@ constexpr bool test_interface() { assert(alloc.soccc_generation == 0); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // iterators @@ -334,7 +334,7 @@ constexpr bool test_interface() { assert(*prev(cre2)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // access @@ -385,7 +385,7 @@ constexpr bool test_interface() { assert(cb); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // capacity @@ -416,7 +416,7 @@ constexpr bool test_interface() { assert(c2 == 32); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // modifiers @@ -524,7 +524,7 @@ constexpr bool test_interface() { assert(input_inserted.size() == size(num_arr)); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // swap @@ -538,7 +538,7 @@ constexpr bool test_interface() { assert(equal(second.begin(), second.end(), begin(expected_second), end(expected_second))); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // erase @@ -553,7 +553,7 @@ constexpr bool test_interface() { assert(equal(erased_if.begin(), erased_if.end(), begin(expected_erase_if), end(expected_erase_if))); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // comparison @@ -590,7 +590,7 @@ constexpr bool test_interface() { } constexpr bool test_iterators() { -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (is_constant_evaluated()) { return true; } diff --git a/tests/std/tests/P2321R2_proxy_reference/test.cpp b/tests/std/tests/P2321R2_proxy_reference/test.cpp index 9160b3c1d21..59bdaa9e2ad 100644 --- a/tests/std/tests/P2321R2_proxy_reference/test.cpp +++ b/tests/std/tests/P2321R2_proxy_reference/test.cpp @@ -274,7 +274,7 @@ constexpr bool test() { { // Test vector::reference static_assert(is_assignable_v::reference, bool>); -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { diff --git a/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp b/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp index ece5d3a88e2..f419065724e 100644 --- a/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp +++ b/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp @@ -296,7 +296,7 @@ _CONSTEXPR20 void test_sequence_swap(const size_t id1, const size_t id2) { template