diff --git a/CMakeLists.txt b/CMakeLists.txt index 3df16f10e..599067f00 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") diff --git a/README.md b/README.md index c9ff45485..318b18352 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 ca0cab066..a4b3e3d3c 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: diff --git a/stl/inc/memory b/stl/inc/memory index 655f32c66..cd4c1292d 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) { diff --git a/stl/src/special_math.cpp b/stl/src/special_math.cpp index 0f17568aa..c5b6350e0 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 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 6a1706876..77e8bff3f 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" diff --git a/tests/std/tests/P0980R1_constexpr_strings/test.cpp b/tests/std/tests/P0980R1_constexpr_strings/test.cpp index a12fc460d..8d8cf25b2 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(); @@ -623,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 @@ -703,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 @@ -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(); @@ -988,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 @@ -1080,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 @@ -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); @@ -1582,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+ @@ -1714,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; } @@ -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'}); @@ -1782,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 @@ -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'}); @@ -1816,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 @@ -1861,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 @@ -1919,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 ^^^ { @@ -1936,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 ^^^ { @@ -1957,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 ^^^ { @@ -1972,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 ^^^ { @@ -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 @@ -2110,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; } @@ -2144,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; } @@ -2178,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; } @@ -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 6df906b51..8bda2b9dc 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)); @@ -374,7 +326,7 @@ constexpr bool test_interface() { assert(c2 == 6); } -#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1674140 (attempt to access expired storage) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726729 (attempt to access run-time storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { // modifiers @@ -476,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 @@ -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); @@ -541,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 @@ -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); @@ -571,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 @@ -612,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 @@ -679,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 ^^^ { @@ -698,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 ^^^ { @@ -715,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 ^^^ { @@ -732,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 e4d3466bc..1531a3fa6 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 @@ -509,7 +509,7 @@ constexpr bool test_interface() { assert(emplaced.size() == 22); } -#ifdef __EDG__ // TRANSITION, VSO-1674154 (invalid arithmetic on non-array pointer) +#if defined(__EDG__) && _ITERATOR_DEBUG_LEVEL == 2 // TRANSITION, VSO-1726722 (attempt to access expired storage) if (!is_constant_evaluated()) #endif // ^^^ workaround ^^^ { @@ -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 9160b3c1d..59bdaa9e2 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 ece5d3a88..f41906572 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