Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
84bf514
Cycle locations.
StephanTLavavej Mar 11, 2026
333249f
CUDA 13.2 (now required).
StephanTLavavej Mar 11, 2026
b76a378
CMake 4.2.3 (now required).
StephanTLavavej Mar 11, 2026
d5271b4
MSVC Compiler 19.51.36122 (now required).
StephanTLavavej Mar 11, 2026
d4aff74
New pools.
StephanTLavavej Mar 11, 2026
75452ee
cxx23-feature.md: Delete.
StephanTLavavej Mar 13, 2026
887dc53
README.md, CMakeLists.txt: Improve guidance for the Preview build tools.
StephanTLavavej Mar 13, 2026
4878def
bug-report.md: Recommend the Latest or Preview version.
StephanTLavavej Mar 13, 2026
3477495
pull_request_template.md: Add AI guidance.
StephanTLavavej Mar 13, 2026
a045450
Azure Pipelines: Consolidate Setup TMP Directory into Clean After Che…
StephanTLavavej Mar 12, 2026
988d050
All: Avoid warnings about comparing unsigned integers with zero.
StephanTLavavej Mar 11, 2026
4ff6a07
All: Remove workaround for CWG-1129, implemented aeons ago.
StephanTLavavej Mar 12, 2026
f6674ea
CUDA: Perma-workaround for designated aggregate initialization.
StephanTLavavej Mar 11, 2026
b23071c
CUDA: Remove workaround for Down With Typename.
StephanTLavavej Mar 11, 2026
03f9320
CUDA: Remove workaround for CWG-2518 static_assert(false).
StephanTLavavej Mar 11, 2026
915c420
CUDA: Remove workaround for intrinsics.
StephanTLavavej Mar 11, 2026
17dc94c
CUDA: Remove workaround for nocheck type traits.
StephanTLavavej Mar 11, 2026
11e4f20
CUDA: Remove workaround for static call operators.
StephanTLavavej Mar 11, 2026
c8d758d
CUDA: Remove workaround for parenthesized aggregate initialization.
StephanTLavavej Mar 12, 2026
f0a7793
MSVC: Remove workaround: VSO-1285783 was fixed by MSVC-PR-694629 on 2…
StephanTLavavej Mar 12, 2026
d9847f4
MSVC: Remove workaround: VSO-2714784 was fixed by MSVC-PR-707352 on 2…
StephanTLavavej Mar 12, 2026
0d185fc
MSVC: Remove workaround: VSO-2714798 was fixed by MSVC-PR-708374 on 2…
StephanTLavavej Mar 12, 2026
b2b2f53
MSVC: Remove workaround: DevCom-10798069 was fixed by MSVC-PR-704666 …
StephanTLavavej Mar 12, 2026
7f13edb
MSVC: Remove workaround: DevCom-10416247 was fixed before 2024-10-15.
StephanTLavavej Mar 12, 2026
2b5b0f5
MSVC: Remove workaround: VSO-570323 was a `/Za` bug, which we no long…
StephanTLavavej Mar 12, 2026
2af51a1
EDG: Remove workaround: VSO-892694 was fixed by VS-PR-527543 on 2024-…
StephanTLavavej Mar 12, 2026
a2cbf53
/analyze: CppCoreCheck.dll was removed by MSVC-PR-674029 on 2025-10-29.
StephanTLavavej Mar 12, 2026
df3e5b4
Tests: GH_000639_nvcc_include_all: Add coverage for removed CUDA work…
StephanTLavavej Mar 12, 2026
bb24a46
Tests: P1682R3_to_underlying: Remove SFINAE workaround, use concepts.
StephanTLavavej Mar 12, 2026
445aa4f
Tests: VSO_0000000_instantiate_type_traits: Use is_permissive.hpp ins…
StephanTLavavej Mar 12, 2026
b40e85b
Tests: Dev11_1074023_constexpr: Test the constexpr mutex constructor.
StephanTLavavej Mar 12, 2026
2dc2edc
Tests: Enable ASan annotation tests for ARM64, except Clang.
StephanTLavavej Mar 12, 2026
3d56fe4
Comments: Clarify the CUDA restrict workaround.
StephanTLavavej Mar 11, 2026
0426df3
Comments: CUDA still needs the `basic_format_arg()` workaround.
StephanTLavavej Mar 11, 2026
5252975
Comments: Update citation from N4928 + P2655R3 to N5032.
StephanTLavavej Mar 12, 2026
2738976
Comments: Consistently say "TRANSITION, ABI".
StephanTLavavej Mar 12, 2026
9222814
Comments: Drop TRANSITION comment in experimental code.
StephanTLavavej Mar 12, 2026
9bdf9ae
Comments: Update citation from DevCom-10265237 to VSO-2826400.
StephanTLavavej Mar 12, 2026
bef18c5
Mechanical: `_STATIC_CALL_OPERATOR` => `static`, `_CONST_CALL_OPERATO…
StephanTLavavej Mar 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ read the guidelines for submitting STL bug reports in `README.md`. If you are
having problems with any component that is not the STL, instructions to get
to the right place are there.

Even if your project is using an older version of the MSVC Build Tools, please
check the Latest production release (or better yet, the Preview release) before
reporting bugs. This will save time by avoiding reports of already-fixed bugs.

# Command-line test case
```
C:\Temp>type repro.cpp
Expand Down
26 changes: 0 additions & 26 deletions .github/ISSUE_TEMPLATE/cxx23-feature.md

This file was deleted.

18 changes: 16 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
<!--
Before submitting a pull request, please ensure that:
<!-- Before submitting a pull request, please ensure that:
* Any AI-generated code has been clearly disclosed in your PR description.
We strongly discourage AI-generated changes to product code because the STL
is a highly unusual codebase with complex correctness and performance
requirements imposed by the Standard, and highly unusual code patterns that
don't look like typical codebases. Our intensive code review process
(to avoid bugs) is intentionally a bottleneck, so we ask that you be
considerate of the time and effort that we'll need to spend, by starting
with changes that you fully understand. Test code has weaker requirements,
so AI-generated changes for tests can be acceptable if properly disclosed.
* Your PR description explains your intent behind the changes.
We discourage AI-generated PR descriptions because we can read the changes,
and we have access to the same AI tools that you have, so we can get
an AI-generated summary if we want.
* Identifiers in product code changes are properly `_Ugly` as per
https://eel.is/c++draft/lex.name#3.1 or there are no product code changes.
Expand Down
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

cmake_minimum_required(VERSION 4.2.1)
cmake_minimum_required(VERSION 4.2.3)

set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
project(msvc_standard_libraries LANGUAGES CXX)

if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.51.36014")
message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.51.36014 or later.")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.51.36122")
message(FATAL_ERROR "The STL must be built with MSVC Compiler 19.51.36122 or later. Follow the README instructions.")
endif()

include(CheckCXXSourceCompiles)
Expand All @@ -18,7 +18,7 @@ int main() {}
]=] WINDOWS_SDK_VERSION_CHECK)

if(NOT WINDOWS_SDK_VERSION_CHECK)
message(FATAL_ERROR "The STL must be built with the Windows 11 SDK (10.0.26100) or later. Make sure it's available by selecting it in the Individual Components tab of the VS Installer.")
message(FATAL_ERROR "The STL must be built with the Windows 11 SDK (10.0.26100) or later. Follow the README instructions.")
endif()

if(NOT DEFINED VCLIBS_TARGET_ARCHITECTURE)
Expand Down
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem
# Visual Studio Installer Prerequisites

* Install [VS 2026 Insiders][] and keep it up to date.
+ **You must install Insiders for STL development.** *See Note 1 below.*
+ **You must install the Insiders IDE and the Preview build tools for STL development.** *See Note 1 below.*
+ Select the "Desktop development with C++" workload.
+ Select the following components at a minimum:
- "MSVC Build Tools for x64/x86 (Preview)"
Expand All @@ -155,8 +155,12 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem
+ Select "Add python.exe to PATH" if you want to follow the instructions below that invoke `python`.
Otherwise, you should be familiar with alternative methods.

*Note 1:* The STL and the compiler ship together, and we frequently need the latest
compiler fixes and features, so the last production release of the compiler is too old.
*Note 1:* The STL and the compiler ship together, and we frequently need recently implemented
compiler fixes and features, so the Latest build tools (i.e. latest production) are too old.
Because the Insiders IDE supports having the Latest and Preview build tools installed simultaneously,
you need to ensure that you're using the Preview build tools. If you build with the IDE, we've arranged for
this to happen automatically. If you build with the Command Prompt, you need to pass `-vcvars_ver=preview`
as explained below. For more info, read the [C++ Team Blog post][preview] that announced this release process.

*Note 2:* The x64/x86 build tools are usually sufficient.
You'll need the ARM64/ARM64EC build tools if you're working with architecture-sensitive code.
Expand Down Expand Up @@ -627,3 +631,4 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
[VS 2026 Insiders]: https://visualstudio.microsoft.com/insiders/
[CXXFLAGS]: https://cmake.org/cmake/help/latest/envvar/CXXFLAGS.html
[start-command]: https://learn.microsoft.com/windows-server/administration/windows-commands/start
[preview]: https://devblogs.microsoft.com/cppblog/microsoft-c-msvc-build-tools-v14-51-preview-released-how-to-opt-in/
15 changes: 4 additions & 11 deletions azure-devops/checkout-self.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,6 @@
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

steps:
- task: PowerShell@2
displayName: 'Setup TMP Directory'
inputs:
pwsh: true
targetType: inline
script: |
$PSNativeCommandUseErrorActionPreference = $true
if (Test-Path -LiteralPath "$(tmpDir)") {
Remove-Item -LiteralPath "$(tmpDir)" -Recurse -Force
}
mkdir "$(tmpDir)" -Force | Out-Null
- checkout: self
clean: true
submodules: false
Expand All @@ -27,3 +16,7 @@ steps:
script: |
$PSNativeCommandUseErrorActionPreference = $true
git clean --quiet -x -d -f -f
if (Test-Path -LiteralPath "$(tmpDir)") {
Remove-Item -LiteralPath "$(tmpDir)" -Recurse -Force
}
mkdir "$(tmpDir)" -Force | Out-Null
6 changes: 3 additions & 3 deletions azure-devops/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@

variables:
- name: x64SlowPoolName
value: 'Stl-2026-02-20T0952-x64-Pool'
value: 'Stl-2026-03-11T0936-x64-Fasv6-Pool'
readonly: true
- name: x64FastPoolName
value: 'Stl-2026-02-24T1452-x64-Fasv7-Pool'
value: 'Stl-2026-03-11T0936-x64-Fasv7-Pool'
readonly: true
- name: arm64PoolName
value: 'Stl-2026-02-20T0952-arm64-Pool'
value: 'Stl-2026-03-11T0936-arm64-Dpsv6-Pool'
readonly: true
- name: poolDemands
value: 'EnableSpotVM -equals false'
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/create-1es-hosted-pool.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ if ($VMSku -ieq 'Fasv6') {
$AvailableLocations = @('eastus2', 'northeurope') # Locations where CPP_STL_GitHub has quota for 1024 cores (32 VMs).
}

$AvailableLocationIdx = 5 # Increment for each new set of pools, to cycle through the available locations.
$AvailableLocationIdx = 6 # Increment for each new set of pools, to cycle through the available locations.
$Location = $AvailableLocations[$AvailableLocationIdx % $AvailableLocations.Length]

if ($Arch -ieq 'x64') {
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/provision-image.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ $PythonArgs = @('/quiet', 'InstallAllUsers=1', 'PrependPath=1', 'CompileAll=1',

# https://developer.nvidia.com/cuda-toolkit
if ($Provisioning_x64) {
$CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_551.61_windows.exe'
$CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda_13.2.0_windows.exe'
} else {
$CudaUrl = 'CUDA is not installed for ARM64'
}
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

cmake_minimum_required(VERSION 4.2.1)
cmake_minimum_required(VERSION 4.2.3)
project(msvc_standard_libraries_benchmarks LANGUAGES CXX)

if(DEFINED STL_BINARY_DIR)
Expand Down
18 changes: 9 additions & 9 deletions stl/inc/__msvc_bit_utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ _NODISCARD constexpr int _Countl_zero_fallback(_Ty _Val) noexcept {
return static_cast<int>(_Nx) - static_cast<int>(_Val);
}

#if !defined(_M_CEE_PURE) && !defined(__CUDACC__)
#if !defined(_M_CEE_PURE)
#define _HAS_COUNTL_ZERO_INTRINSICS 1
#else // ^^^ intrinsics available / intrinsics unavailable vvv
#define _HAS_COUNTL_ZERO_INTRINSICS 0
Expand Down Expand Up @@ -176,7 +176,7 @@ _NODISCARD constexpr int _Popcount_fallback(_Ty _Val) noexcept {
}

#if ((defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC))) \
&& !defined(_M_CEE_PURE) && !defined(__CUDACC__)
&& !defined(_M_CEE_PURE)
#define _HAS_TZCNT_BSF_INTRINSICS 1
#else // ^^^ intrinsics available / intrinsics unavailable vvv
#define _HAS_TZCNT_BSF_INTRINSICS 0
Expand Down Expand Up @@ -267,7 +267,7 @@ _NODISCARD int _Checked_x86_x64_countr_zero(const _Ty _Val) noexcept {

#endif // _HAS_TZCNT_BSF_INTRINSICS

#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64)) && !defined(_M_CEE_PURE) && !defined(__CUDACC__)
#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64)) && !defined(_M_CEE_PURE)
#define _HAS_POPCNT_INTRINSICS 1
#if defined(__AVX__) || defined(_M_ARM64) || defined(_M_ARM64EC)
#define _POPCNT_INTRINSICS_ALWAYS_AVAILABLE 1
Expand Down Expand Up @@ -333,14 +333,14 @@ constexpr decltype(auto) _Select_countr_zero_impl(_Fn _Callback) {
#ifndef __AVX2__
const bool _Definitely_have_tzcnt = __isa_available >= _Stl_isa_available_avx2;
if (!_Definitely_have_tzcnt) {
return _Callback([](_Ty _Val) _STATIC_CALL_OPERATOR { return _Countr_zero_bsf(_Val); });
return _Callback([](_Ty _Val) static { return _Countr_zero_bsf(_Val); });
}
#endif // ^^^ !defined(__AVX2__) ^^^
return _Callback([](_Ty _Val) _STATIC_CALL_OPERATOR { return _Countr_zero_tzcnt(_Val); });
return _Callback([](_Ty _Val) static { return _Countr_zero_tzcnt(_Val); });
}
#endif // ^^^ _HAS_TZCNT_BSF_INTRINSICS && _HAS_CXX20 ^^^
// C++17 constexpr gcd() calls this function, so it should be constexpr unless we detect runtime evaluation.
return _Callback([](_Ty _Val) _STATIC_CALL_OPERATOR { return _Countr_zero_fallback(_Val); });
return _Callback([](_Ty _Val) static { return _Countr_zero_fallback(_Val); });
}

template <class _Ty>
Expand Down Expand Up @@ -385,13 +385,13 @@ _CONSTEXPR20 decltype(auto) _Select_popcount_impl(_Fn _Callback) {
#if !_POPCNT_INTRINSICS_ALWAYS_AVAILABLE
const bool _Definitely_have_popcnt = __isa_available >= _Stl_isa_available_sse42;
if (!_Definitely_have_popcnt) {
return _Callback([](_Ty _Val) _STATIC_CALL_OPERATOR { return _Popcount_fallback(_Val); });
return _Callback([](_Ty _Val) static { return _Popcount_fallback(_Val); });
}
#endif // ^^^ !_POPCNT_INTRINSICS_ALWAYS_AVAILABLE ^^^
return _Callback([](_Ty _Val) _STATIC_CALL_OPERATOR { return _Unchecked_popcount(_Val); });
return _Callback([](_Ty _Val) static { return _Unchecked_popcount(_Val); });
}
#endif // ^^^ _HAS_POPCNT_INTRINSICS ^^^
return _Callback([](_Ty _Val) _STATIC_CALL_OPERATOR { return _Popcount_fallback(_Val); });
return _Callback([](_Ty _Val) static { return _Popcount_fallback(_Val); });
}

#undef _HAS_TZCNT_BSF_INTRINSICS
Expand Down
4 changes: 2 additions & 2 deletions stl/inc/__msvc_formatter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -318,8 +318,8 @@ _EXPORT_STD enum class range_format { disabled, map, set, sequence, string, debu

template <class _Ty>
struct _Invalid_format_kind {
static_assert(_Always_false<_Ty>, "A program that instantiates the primary template of format_kind is ill-formed. "
"(N4981 [format.range.fmtkind]/1)");
static_assert(false, "A program that instantiates the primary template of format_kind is ill-formed. "
"(N4981 [format.range.fmtkind]/1)");
};

_EXPORT_STD template <class _Ty>
Expand Down
2 changes: 1 addition & 1 deletion stl/inc/__msvc_int128.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ _STL_DISABLE_CLANG_WARNINGS

_STD_BEGIN

#if defined(_M_X64) && !defined(_M_ARM64EC) && !defined(_M_CEE_PURE) && !defined(__CUDACC__)
#if defined(_M_X64) && !defined(_M_ARM64EC) && !defined(_M_CEE_PURE)
#define _STL_128_INTRINSICS 1
#ifdef __clang__ // clang doesn't have _udiv128 / _div128
#define _STL_128_DIV_INTRINSICS 0
Expand Down
7 changes: 3 additions & 4 deletions stl/inc/__msvc_iter_core.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -289,11 +289,7 @@ struct _Iter_traits_category4<false> {

template <class _It>
concept _Cpp17_random_delta =
#if defined(__CUDACC__) && !defined(__clang__) // TRANSITION, fixed in CUDA 12.5
totally_ordered<_It> && requires(_It __i, typename incrementable_traits<_It>::difference_type __n) {
#else // ^^^ workaround / no workaround vvv
totally_ordered<_It> && requires(_It __i, incrementable_traits<_It>::difference_type __n) {
#endif // ^^^ no workaround ^^^
{ __i += __n } -> same_as<_It&>;
{ __i -= __n } -> same_as<_It&>;
{ __i + __n } -> same_as<_It>;
Expand Down Expand Up @@ -506,6 +502,9 @@ struct iterator_traits<_Ty*> : _Iterator_traits_pointer_base<_Ty> {}; // get tra

template <class _Ty>
constexpr bool _Integer_like = _Is_nonbool_integral<_Ty>;

template <class _Ty>
constexpr bool _Signed_integer_like = _Integer_like<_Ty> && static_cast<_Ty>(-1) < static_cast<_Ty>(0);
#endif // ^^^ !_HAS_CXX20 ^^^

_INLINE_VAR constexpr auto _Meta_npos = ~size_t{0};
Expand Down
15 changes: 6 additions & 9 deletions stl/inc/__msvc_ranges_to.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -621,8 +621,7 @@ namespace ranges {
public:
template <viewable_range _Rng>
requires (_Choice<_Rng>._Strategy != _St::_None)
_NODISCARD _STATIC_CALL_OPERATOR constexpr auto operator()(_Rng&& _Range) _CONST_CALL_OPERATOR
noexcept(_Choice<_Rng>._No_throw) {
_NODISCARD static constexpr auto operator()(_Rng&& _Range) noexcept(_Choice<_Rng>._No_throw) {
constexpr _St _Strat = _Choice<_Rng>._Strategy;

if constexpr (_Strat == _St::_View) {
Expand Down Expand Up @@ -1046,7 +1045,7 @@ namespace ranges {
namespace views {
struct _Transform_fn {
template <viewable_range _Rng, class _Fn>
_NODISCARD _STATIC_CALL_OPERATOR constexpr auto operator()(_Rng&& _Range, _Fn _Fun) _CONST_CALL_OPERATOR
_NODISCARD static constexpr auto operator()(_Rng&& _Range, _Fn _Fun)
noexcept(noexcept(transform_view(_STD forward<_Rng>(_Range), _STD move(_Fun))))
requires requires { transform_view(static_cast<_Rng &&>(_Range), _STD move(_Fun)); }
{
Expand All @@ -1055,7 +1054,7 @@ namespace ranges {

template <class _Fn>
requires constructible_from<decay_t<_Fn>, _Fn>
_NODISCARD _STATIC_CALL_OPERATOR constexpr auto operator()(_Fn&& _Fun) _CONST_CALL_OPERATOR
_NODISCARD static constexpr auto operator()(_Fn&& _Fun)
noexcept(is_nothrow_constructible_v<decay_t<_Fn>, _Fn>) {
return _Range_closure<_Transform_fn, decay_t<_Fn>>{_STD forward<_Fn>(_Fun)};
}
Expand Down Expand Up @@ -1146,7 +1145,7 @@ namespace ranges {
"the default-constructed object. (N5014 [range.utility.conv.to]/2.1.5)");
}
} else if constexpr (input_range<range_reference_t<_Rng>>) {
const auto _Xform = [](auto&& _Elem) _STATIC_CALL_OPERATOR {
const auto _Xform = [](auto&& _Elem) static {
return _RANGES to<range_value_t<_Container>>(_STD forward<decltype(_Elem)>(_Elem));
};
return _RANGES to<_Container>(views::transform(ref_view{_Range}, _Xform), _STD forward<_Types>(_Args)...);
Expand All @@ -1166,8 +1165,7 @@ namespace ranges {
_STL_INTERNAL_STATIC_ASSERT(!view<_Container>);

template <input_range _Rng, class... _Types>
_NODISCARD _STATIC_CALL_OPERATOR constexpr auto operator()(
_Rng&& _Range, _Types&&... _Args) _CONST_CALL_OPERATOR
_NODISCARD static constexpr auto operator()(_Rng&& _Range, _Types&&... _Args)
requires requires { _RANGES to<_Container>(_STD forward<_Rng>(_Range), _STD forward<_Types>(_Args)...); }
{
return _RANGES to<_Container>(_STD forward<_Rng>(_Range), _STD forward<_Types>(_Args)...);
Expand Down Expand Up @@ -1222,8 +1220,7 @@ namespace ranges {
struct _To_template_fn {
template <input_range _Rng, class... _Types,
class _Deduced = remove_pointer_t<decltype(_To_helper<_Container, _Rng, _Types...>())>>
_NODISCARD _STATIC_CALL_OPERATOR constexpr auto operator()(
_Rng&& _Range, _Types&&... _Args) _CONST_CALL_OPERATOR {
_NODISCARD static constexpr auto operator()(_Rng&& _Range, _Types&&... _Args) {
return _RANGES to<_Deduced>(_STD forward<_Rng>(_Range), _STD forward<_Types>(_Args)...);
}
};
Expand Down
2 changes: 1 addition & 1 deletion stl/inc/__msvc_ranges_tuple_formatter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ class _NO_SPECIALIZATIONS_CITING("N5014 [format.arg]/2") basic_format_arg {
}
};

#if defined(__clang__) || defined(__CUDACC__) // TRANSITION, LLVM-81774 (Clang), VSO-2411436 (needed by CUDA 12.8.1)
#if defined(__clang__) || defined(__CUDACC__) // TRANSITION, LLVM-81774, DevCom-10863472 (still needed by CUDA 13.2)
basic_format_arg() noexcept : _Active_state(_Basic_format_arg_type::_None), _No_state() {}
#else // ^^^ workaround / no workaround vvv
basic_format_arg() noexcept = default;
Expand Down
8 changes: 4 additions & 4 deletions stl/inc/__msvc_tzdb.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,28 +101,28 @@ struct _Tzdb_deleter;

template <>
struct _Tzdb_deleter<__std_tzdb_time_zones_info> {
_STATIC_CALL_OPERATOR void operator()(__std_tzdb_time_zones_info* _Info) _CONST_CALL_OPERATOR noexcept {
static void operator()(__std_tzdb_time_zones_info* _Info) noexcept {
__std_tzdb_delete_time_zones(_Info);
}
};

template <>
struct _Tzdb_deleter<__std_tzdb_current_zone_info> {
_STATIC_CALL_OPERATOR void operator()(__std_tzdb_current_zone_info* _Info) _CONST_CALL_OPERATOR noexcept {
static void operator()(__std_tzdb_current_zone_info* _Info) noexcept {
__std_tzdb_delete_current_zone(_Info);
}
};

template <>
struct _Tzdb_deleter<__std_tzdb_sys_info> {
_STATIC_CALL_OPERATOR void operator()(__std_tzdb_sys_info* _Info) _CONST_CALL_OPERATOR noexcept {
static void operator()(__std_tzdb_sys_info* _Info) noexcept {
__std_tzdb_delete_sys_info(_Info);
}
};

template <>
struct _Tzdb_deleter<__std_tzdb_leap_info[]> {
_STATIC_CALL_OPERATOR void operator()(__std_tzdb_leap_info* _Info) _CONST_CALL_OPERATOR noexcept {
static void operator()(__std_tzdb_leap_info* _Info) noexcept {
__std_tzdb_delete_leap_seconds(_Info);
}
};
Expand Down
Loading