From b680910ee3f0466996ab3283bc51c245d8823ef6 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 11:16:58 -0700 Subject: [PATCH 01/12] Python 3.13.0. --- azure-devops/provision-image.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-devops/provision-image.ps1 b/azure-devops/provision-image.ps1 index 9117f0a8bd..94ecd3de0d 100644 --- a/azure-devops/provision-image.ps1 +++ b/azure-devops/provision-image.ps1 @@ -43,7 +43,7 @@ foreach ($workload in $VisualStudioWorkloads) { $PowerShellUrl = '/~https://github.com/PowerShell/PowerShell/releases/download/v7.4.5/PowerShell-7.4.5-win-x64.msi' $PowerShellArgs = @('/quiet', '/norestart') -$PythonUrl = 'https://www.python.org/ftp/python/3.12.6/python-3.12.6-amd64.exe' +$PythonUrl = 'https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe' $PythonArgs = @('/quiet', 'InstallAllUsers=1', 'PrependPath=1', 'CompileAll=1', 'Include_doc=0') $CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_551.61_windows.exe' From 8c8c99824bfe6ceb68285c34e5723a72b6f2e6b2 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 11:54:26 -0700 Subject: [PATCH 02/12] New pool. --- azure-devops/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-devops/config.yml b/azure-devops/config.yml index bc90f9f8e7..2080005861 100644 --- a/azure-devops/config.yml +++ b/azure-devops/config.yml @@ -5,7 +5,7 @@ variables: - name: poolName - value: 'StlBuild-2024-09-10T1506-Pool' + value: 'StlBuild-2024-10-15T1118-Pool' readonly: true - name: poolDemands value: 'EnableSpotVM -equals false' From c99c4c9b4a369ef71fe0813451cf4c6c9b49388b Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 11:55:04 -0700 Subject: [PATCH 03/12] Document VS 2022 17.12 Preview 3. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e5631dc1c8..70b31dca96 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.12 Preview 2 or later. +1. Install Visual Studio 2022 17.12 Preview 3 or later. * Select "Windows 11 SDK (10.0.22621.0)" in the VS Installer. * Select "MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (Latest)" in the VS Installer if you would like to build the ARM64/ARM64EC target. @@ -160,7 +160,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.12 Preview 2 or later. +1. Install Visual Studio 2022 17.12 Preview 3 or later. * Select "Windows 11 SDK (10.0.22621.0)" in the VS Installer. * Select "MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (Latest)" in the VS Installer if you would like to build the ARM64/ARM64EC target. From 67cbd07d305fb8f300517306529ca6b3af7c2655 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 11:59:37 -0700 Subject: [PATCH 04/12] Require MSVC 19.42. --- stl/inc/yvals_core.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index c1915dc0f3..296e4b7189 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -927,8 +927,8 @@ _EMIT_STL_ERROR(STL1002, "Unexpected compiler version, expected CUDA 12.4 or new _EMIT_STL_ERROR(STL1000, "Unexpected compiler version, expected Clang 18.0.0 or newer."); #endif // ^^^ old Clang ^^^ #elif defined(_MSC_VER) -#if _MSC_VER < 1941 // Coarse-grained, not inspecting _MSC_FULL_VER -_EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.41 or newer."); +#if _MSC_VER < 1942 // Coarse-grained, not inspecting _MSC_FULL_VER +_EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.42 or newer."); #endif // ^^^ old MSVC ^^^ #else // vvv other compilers vvv // not attempting to detect other compilers From 7145aab59307400dc8dd6fde3bc5225a8561decd Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 11:57:04 -0700 Subject: [PATCH 05/12] Document Python 3.13. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 70b31dca96..5340586efc 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem * 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. * Otherwise, install [CMake][] 3.29.0 or later, and [Ninja][] 1.12.1 or later. - * Make sure [Python][] 3.12 or later is available to CMake. + * Make sure [Python][] 3.13 or later is available to CMake. 2. Open Visual Studio, and choose the "Clone or check out code" option. Enter the URL of this repository, `/~https://github.com/microsoft/STL`. 3. Open a terminal in the IDE with `` Ctrl + ` `` (by default) or press on "View" in the top bar, and then "Terminal". @@ -169,7 +169,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem * 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. * Otherwise, install [CMake][] 3.29.0 or later, and [Ninja][] 1.12.1 or later. - * Make sure [Python][] 3.12 or later is available to CMake. + * Make sure [Python][] 3.13 or later is available to CMake. 2. Open a command prompt. 3. Change directories to a location where you'd like a clone of this STL repository. 4. `git clone /~https://github.com/microsoft/STL.git --recurse-submodules` @@ -262,7 +262,7 @@ C:\Users\username\Desktop>dumpbin /DEPENDENTS .\example.exe | findstr msvcp # How To Run The Tests With A Native Tools Command Prompt 1. Follow either [How To Build With A Native Tools Command Prompt][] or [How To Build With The Visual Studio IDE][]. -2. Acquire [Python][] 3.12 or newer and have it on the `PATH` (or run it directly using its absolute or relative path). +2. Acquire [Python][] 3.13 or newer and have it on the `PATH` (or run it directly using its absolute or relative path). 3. Have LLVM's `bin` directory on the `PATH` (so `clang-cl.exe` is available). * We recommend selecting "C++ Clang tools for Windows" in the VS Installer. This will automatically add LLVM to the `PATH` of the x86 and x64 Native Tools Command Prompts, and will ensure that you're using a supported version. From 1f57f3b6944b914829bc40230b53fad8d0a47771 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 12:01:13 -0700 Subject: [PATCH 06/12] Require Python 3.13. --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 811886ce5b..9dc352a0f2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -23,7 +23,7 @@ add_subdirectory(tr1) # chance to add to the config map and test directory global properties. add_subdirectory(utils/stl-lit) -find_package(Python "3.12" REQUIRED COMPONENTS Interpreter) +find_package(Python "3.13" REQUIRED COMPONENTS Interpreter) if(NOT DEFINED LIT_FLAGS) list(APPEND LIT_FLAGS "-o" "${CMAKE_CURRENT_BINARY_DIR}/test_results.json") From ae65a2a81bead52ab9d6149e7016327e46cf4279 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 12:10:18 -0700 Subject: [PATCH 07/12] Remove workarounds for VSO-1775715. --- stl/inc/format | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stl/inc/format b/stl/inc/format index 70429d4eef..52ae46784c 100644 --- a/stl/inc/format +++ b/stl/inc/format @@ -1795,16 +1795,16 @@ template _NODISCARD constexpr string_view _Get_integral_prefix(const char _Type, const _Integral _Value) noexcept { switch (_Type) { case 'b': - return string_view{"0b", 2}; // TRANSITION, VSO-1775715 (should use UDLs in this function) + return "0b"sv; case 'B': - return string_view{"0B", 2}; + return "0B"sv; case 'x': - return string_view{"0x", 2}; + return "0x"sv; case 'X': - return string_view{"0X", 2}; + return "0X"sv; case 'o': if (_Value != _Integral{0}) { - return string_view{"0", 1}; + return "0"sv; } return {}; default: From 6d4d188f064b19694e70478613b898f9ee786e0b Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 12:12:02 -0700 Subject: [PATCH 08/12] Remove workaround for VSO-2164191. --- tests/libcxx/expected_results.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index a9bab3c4f5..763625513a 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -224,9 +224,6 @@ std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_strong.pa std/atomics/atomics.types.generic/atomics.types.float/compare_exchange_weak.pass.cpp:1 SKIPPED std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp:1 SKIPPED -# VSO-2164191 "[ASan][STL] Interception breaks strtoll" -std/strings/string.conversions/stoll.pass.cpp:1 FAIL - # *** MISSING STL FEATURES *** # Missing mbrtoc8 and c8rtomb From 476e6834d039caf3a08d77a6cbd3449314767583 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 12:19:54 -0700 Subject: [PATCH 09/12] Remove `_MSVC_INTERNAL_TESTING` compiler bug workarounds. --- tests/std/tests/P0088R3_variant/test.cpp | 8 -------- tests/std/tests/P1206R7_ranges_to_mappish/test.cpp | 2 -- tests/std/tests/P1206R7_ranges_to_misc/test.cpp | 8 -------- tests/std/tests/P1206R7_ranges_to_sequence/test.cpp | 2 -- tests/std/tests/P1206R7_ranges_to_settish/test.cpp | 2 -- tests/std/tests/P2136R3_invoke_r/test.cpp | 2 -- 6 files changed, 24 deletions(-) diff --git a/tests/std/tests/P0088R3_variant/test.cpp b/tests/std/tests/P0088R3_variant/test.cpp index 403a873116..99fde74335 100644 --- a/tests/std/tests/P0088R3_variant/test.cpp +++ b/tests/std/tests/P0088R3_variant/test.cpp @@ -285,9 +285,7 @@ void test_const_lvalue_get() { { using V = std::variant; constexpr V v(42); -#if defined(_MSVC_INTERNAL_TESTING) || defined(__clang__) || defined(__EDG__) // TRANSITION, vs17.12p3 ASSERT_NOT_NOEXCEPT(std::get<0>(v)); -#endif // ^^^ no workaround ^^^ ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &); static_assert(std::get<0>(v) == 42, ""); } @@ -301,9 +299,7 @@ void test_const_lvalue_get() { { using V = std::variant; constexpr V v(42l); -#if defined(_MSVC_INTERNAL_TESTING) || defined(__clang__) || defined(__EDG__) // TRANSITION, vs17.12p3 ASSERT_NOT_NOEXCEPT(std::get<1>(v)); -#endif // ^^^ no workaround ^^^ ASSERT_SAME_TYPE(decltype(std::get<1>(v)), const long &); static_assert(std::get<1>(v) == 42, ""); } @@ -451,9 +447,7 @@ void test_const_lvalue_get() { { using V = std::variant; constexpr V v(42); -#if defined(_MSVC_INTERNAL_TESTING) || defined(__clang__) || defined(__EDG__) // TRANSITION, vs17.12p3 ASSERT_NOT_NOEXCEPT(std::get(v)); -#endif // ^^^ no workaround ^^^ ASSERT_SAME_TYPE(decltype(std::get(v)), const int &); static_assert(std::get(v) == 42, ""); } @@ -467,9 +461,7 @@ void test_const_lvalue_get() { { using V = std::variant; constexpr V v(42l); -#if defined(_MSVC_INTERNAL_TESTING) || defined(__clang__) || defined(__EDG__) // TRANSITION, vs17.12p3 ASSERT_NOT_NOEXCEPT(std::get(v)); -#endif // ^^^ no workaround ^^^ ASSERT_SAME_TYPE(decltype(std::get(v)), const long &); static_assert(std::get(v) == 42, ""); } diff --git a/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp b/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp index 6fdf75de28..6ba6e3fa3b 100644 --- a/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp +++ b/tests/std/tests/P1206R7_ranges_to_mappish/test.cpp @@ -156,13 +156,11 @@ struct mappish_instantiator { assert(c5.get_allocator().state == 13); assert(ranges::is_permutation(c5, expected, any_pair_eq)); } -#if defined(_MSVC_INTERNAL_TESTING) || !defined(__EDG__) // TRANSITION, VS 17.12p3 { std::same_as auto c6 = R{some_pairs} | ranges::to(Alloc{13}); assert(c6.get_allocator().state == 13); assert(ranges::is_permutation(c6, expected, any_pair_eq)); } -#endif // ^^^ no workaround ^^^ { std::same_as auto c7 = R{some_pairs} | ranges::to(Alloc{13}); assert(c7.get_allocator().state == 13); diff --git a/tests/std/tests/P1206R7_ranges_to_misc/test.cpp b/tests/std/tests/P1206R7_ranges_to_misc/test.cpp index d7e9bde278..c788206ffb 100644 --- a/tests/std/tests/P1206R7_ranges_to_misc/test.cpp +++ b/tests/std/tests/P1206R7_ranges_to_misc/test.cpp @@ -54,7 +54,6 @@ struct reservable { }; constexpr bool test_reservable() { -#if defined(_MSVC_INTERNAL_TESTING) || !defined(__EDG__) // TRANSITION, VS 17.12p3 int some_ints[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; { std::same_as auto r = some_ints | ranges::to(secret_key); @@ -62,7 +61,6 @@ constexpr bool test_reservable() { assert(r.cap_ == ranges::size(some_ints)); assert(r.reserved_ == ranges::size(some_ints)); } -#endif // ^^^ no workaround ^^^ return true; } @@ -93,14 +91,12 @@ constexpr bool test_common_constructible() { assert(c0.last_ == ranges::end(some_ints)); assert(c0.args_ == 3); } -#if defined(_MSVC_INTERNAL_TESTING) || !defined(__EDG__) // TRANSITION, VS 17.12p3 { std::same_as auto c1 = some_ints | ranges::to(secret_key); assert(c1.first_ == ranges::begin(some_ints)); assert(c1.last_ == ranges::end(some_ints)); assert(c1.args_ == 3); } -#endif // ^^^ no workaround ^^^ // Verify that more than one argument can be passed after the range: { @@ -109,14 +105,12 @@ constexpr bool test_common_constructible() { assert(c2.last_ == ranges::end(some_ints)); assert(c2.args_ == 4); } -#if defined(_MSVC_INTERNAL_TESTING) || !defined(__EDG__) // TRANSITION, VS 17.12p3 { std::same_as auto c3 = some_ints | ranges::to(secret_key, 3.14); assert(c3.first_ == ranges::begin(some_ints)); assert(c3.last_ == ranges::end(some_ints)); assert(c3.args_ == 4); } -#endif // ^^^ no workaround ^^^ return true; } @@ -302,7 +296,6 @@ constexpr void test_lwg4016_per_kind() { std::same_as auto vec = std::views::iota(0, 42) | ranges::to(); assert(ranges::equal(vec, std::views::iota(0, 42))); } -#if defined(_MSVC_INTERNAL_TESTING) || !defined(__EDG__) // TRANSITION, VS 17.12p3 { std::same_as auto vec = std::views::iota(0, 42) | ranges::to(std::allocator{}); assert(ranges::equal(vec, std::views::iota(0, 42))); @@ -315,7 +308,6 @@ constexpr void test_lwg4016_per_kind() { std::same_as auto vec = std::views::empty | ranges::to(std::size_t{42}, std::allocator{}); assert(ranges::equal(vec, std::views::repeat(0, 42))); } -#endif // ^^^ no workaround ^^^ { std::same_as auto vec = ranges::to(std::views::iota(0, 42), std::initializer_list{-3, -2, -1}); assert(ranges::equal(vec, std::views::iota(-3, 42))); diff --git a/tests/std/tests/P1206R7_ranges_to_sequence/test.cpp b/tests/std/tests/P1206R7_ranges_to_sequence/test.cpp index acb190e9c0..9ee7894d9f 100644 --- a/tests/std/tests/P1206R7_ranges_to_sequence/test.cpp +++ b/tests/std/tests/P1206R7_ranges_to_sequence/test.cpp @@ -145,13 +145,11 @@ struct sequence_instantiator { assert(c5.get_allocator().state == 13); assert(ranges::equal(c5, meow)); } -#if defined(_MSVC_INTERNAL_TESTING) || !defined(__EDG__) // TRANSITION, VS 17.12p3 { std::same_as auto c6 = R{meow} | ranges::to(Alloc{13}); assert(c6.get_allocator().state == 13); assert(ranges::equal(c6, meow)); } -#endif // ^^^ no workaround ^^^ { std::same_as auto c7 = R{meow} | ranges::to(Alloc{13}); assert(c7.get_allocator().state == 13); diff --git a/tests/std/tests/P1206R7_ranges_to_settish/test.cpp b/tests/std/tests/P1206R7_ranges_to_settish/test.cpp index 71c733e486..df56e6fccc 100644 --- a/tests/std/tests/P1206R7_ranges_to_settish/test.cpp +++ b/tests/std/tests/P1206R7_ranges_to_settish/test.cpp @@ -150,13 +150,11 @@ struct settish_instantiator { assert(c5.get_allocator().state == 13); assert(ranges::is_permutation(c5, expected)); } -#if defined(_MSVC_INTERNAL_TESTING) || !defined(__EDG__) // TRANSITION, VS 17.12p3 { std::same_as auto c6 = R{some_ints} | ranges::to(Alloc{13}); assert(c6.get_allocator().state == 13); assert(ranges::is_permutation(c6, expected)); } -#endif // ^^^ no workaround ^^^ { std::same_as auto c7 = R{some_ints} | ranges::to(Alloc{13}); assert(c7.get_allocator().state == 13); diff --git a/tests/std/tests/P2136R3_invoke_r/test.cpp b/tests/std/tests/P2136R3_invoke_r/test.cpp index 4da180d46a..1eb591621d 100644 --- a/tests/std/tests/P2136R3_invoke_r/test.cpp +++ b/tests/std/tests/P2136R3_invoke_r/test.cpp @@ -48,10 +48,8 @@ constexpr bool test_invoke_r() { static_assert(is_same_v); static_assert(is_void_v(square, 1))>); -#if defined(_MSVC_INTERNAL_TESTING) || defined(__clang__) || defined(__EDG__) // TRANSITION, vs17.12p3 static_assert(!noexcept(invoke_r(square, 3))); static_assert(!noexcept(invoke(square, 3))); -#endif // ^^^ no workaround ^^^ constexpr bool has_noexcept_in_type = #ifdef __cpp_noexcept_function_type From ced269af0c8a6cd5a50414daf1514ae446799fde Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 15 Oct 2024 13:27:34 -0700 Subject: [PATCH 10/12] Unskip passing tests. --- tests/libcxx/expected_results.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 763625513a..33c3d96fe8 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -861,12 +861,6 @@ std/ranges/range.adaptors/range.lazy.split/range.lazy.split.inner/iter_swap.pass # Not analyzed. Checking whether packaged_task is constructible from an allocator and a packaged_task of a different type. std/thread/futures/futures.task/futures.task.members/ctor2.compile.pass.cpp FAIL -# Not analyzed. Possible MSVC compiler bug, this is inspecting type trait behavior. -std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_assignable.pass.cpp:0 FAIL -std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_copy_assignable.pass.cpp:1 FAIL -std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_assignable.pass.cpp:0 FAIL -std/utilities/meta/meta.unary/meta.unary.prop/is_nothrow_move_assignable.pass.cpp:1 FAIL - # Not analyzed. # MSVC error C2131: expression did not evaluate to a constant # MSVC note: failure was caused by a read of an uninitialized symbol From db465d13a68c5e513821100d823027a737a65f3f Mon Sep 17 00:00:00 2001 From: Casey Carter Date: Tue, 15 Oct 2024 22:01:07 -0700 Subject: [PATCH 11/12] VSO-2228189 should be fixed in 17.12p3 --- stl/inc/chrono | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/stl/inc/chrono b/stl/inc/chrono index c983d98215..089599c893 100644 --- a/stl/inc/chrono +++ b/stl/inc/chrono @@ -2209,9 +2209,8 @@ namespace chrono { auto [_Icu_version, _Zones, _Links] = _Tzdb_generate_time_zones(); auto [_Leap_sec, _All_ls_positive] = _Tzdb_generate_leap_seconds(0); auto _Version = _Icu_version + "." + _STD to_string(_Leap_sec.size()); - // TRANSITION, VSO-2228186, should call emplace_front with construction arguments - _Tzdb_list.emplace_front(tzdb{ - _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive}); + _Tzdb_list.emplace_front( + _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive); } _NODISCARD const tzdb& front() const noexcept { @@ -2267,9 +2266,8 @@ namespace chrono { } auto _Version = _Tzdb_update_version(_Tzdb.version, _Leap_sec.size()); - // TRANSITION, VSO-2228186, should call emplace_front with construction arguments - _Tzdb_list.emplace_front(tzdb{ - _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive}); + _Tzdb_list.emplace_front( + _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive); } return _Tzdb_list.front(); } From 6ccff9178f4e7c4886c7347b8eb11111d66fb3b8 Mon Sep 17 00:00:00 2001 From: Casey Carter Date: Tue, 15 Oct 2024 22:25:12 -0700 Subject: [PATCH 12/12] NVCC is still using an EDG that needs this workaround --- stl/inc/chrono | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/stl/inc/chrono b/stl/inc/chrono index 089599c893..598f806836 100644 --- a/stl/inc/chrono +++ b/stl/inc/chrono @@ -2209,8 +2209,9 @@ namespace chrono { auto [_Icu_version, _Zones, _Links] = _Tzdb_generate_time_zones(); auto [_Leap_sec, _All_ls_positive] = _Tzdb_generate_leap_seconds(0); auto _Version = _Icu_version + "." + _STD to_string(_Leap_sec.size()); - _Tzdb_list.emplace_front( - _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive); + // TRANSITION, NVCC (was DevCom-10732572), should call emplace_front with construction arguments + _Tzdb_list.emplace_front(tzdb{ + _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive}); } _NODISCARD const tzdb& front() const noexcept { @@ -2266,8 +2267,9 @@ namespace chrono { } auto _Version = _Tzdb_update_version(_Tzdb.version, _Leap_sec.size()); - _Tzdb_list.emplace_front( - _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive); + // TRANSITION, NVCC (was DevCom-10732572), should call emplace_front with construction arguments + _Tzdb_list.emplace_front(tzdb{ + _STD move(_Version), _STD move(_Zones), _STD move(_Links), _STD move(_Leap_sec), _All_ls_positive}); } return _Tzdb_list.front(); }