diff --git a/.clang-format b/.clang-format index 3871a6748ae..525a846df7f 100644 --- a/.clang-format +++ b/.clang-format @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -# https://releases.llvm.org/16.0.0/tools/clang/docs/ClangFormatStyleOptions.html +# https://releases.llvm.org/17.0.1/tools/clang/docs/ClangFormatStyleOptions.html --- # Language: Cpp @@ -38,6 +38,11 @@ AlignConsecutiveAssignments: Consecutive # AlignCompound: false # PadOperators: false AlignConsecutiveMacros: Consecutive +# AlignConsecutiveShortCaseStatements: +# Enabled: false +# AcrossEmptyLines: false +# AcrossComments: false +# AlignCaseColons: false # AlignEscapedNewlines: Right AlignEscapedNewlines: Left # AlignOperands: Align @@ -176,6 +181,7 @@ InsertNewlineAtEOF: true # JavaScriptQuotes: Leave # JavaScriptWrapImports: true # KeepEmptyLinesAtTheStartOfBlocks: true +# KeepEmptyLinesAtEOF: false # LambdaBodyIndentation: Signature # LineEnding: DeriveLF LineEnding: CRLF @@ -209,6 +215,7 @@ PointerAlignment: Left # ReferenceAlignment: Pointer # ReflowComments: true # RemoveBracesLLVM: false +# RemoveParentheses: Leave # RemoveSemicolon: false RemoveSemicolon: true # RequiresClausePosition: OwnLine @@ -228,6 +235,7 @@ SpaceAfterCStyleCast: true # SpaceBeforeCpp11BracedList: false # SpaceBeforeCtorInitializerColon: true # SpaceBeforeInheritanceColon: true +# SpaceBeforeJsonColon: false # SpaceBeforeParens: ControlStatements # SpaceBeforeParensOptions: # AfterControlStatements: true @@ -245,16 +253,18 @@ SpaceBeforeParensOptions: # SpaceBeforeRangeBasedForLoopColon: true # SpaceBeforeSquareBrackets: false # SpaceInEmptyBlock: false -# SpaceInEmptyParentheses: false # SpacesBeforeTrailingComments: 1 # SpacesInAngles: Never -# SpacesInConditionalStatement: false # SpacesInContainerLiterals: true -# SpacesInCStyleCastParentheses: false # SpacesInLineCommentPrefix: # Minimum: 1 # Maximum: -1 -# SpacesInParentheses: false +# SpacesInParens: Never +# SpacesInParensOptions: +# InCStyleCasts: false +# InConditionalStatements: false +# InEmptyParentheses: false +# Other: false # SpacesInSquareBrackets: false # Standard: Latest # StatementAttributeLikeMacros: @@ -277,6 +287,7 @@ StatementMacros: - _END_EXTERN_C_UNLESS_PURE # TabWidth: 8 # UseTab: Never +# VerilogBreakBetweenInstancePorts: true # WhitespaceSensitiveMacros: # - BOOST_PP_STRINGIZE # - CF_SWIFT_NAME diff --git a/.github/workflows/assign-new-prs.yml b/.github/workflows/assign-new-prs.yml index a8922508c34..d7e5509f55e 100644 --- a/.github/workflows/assign-new-prs.yml +++ b/.github/workflows/assign-new-prs.yml @@ -9,6 +9,8 @@ on: - main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +permissions: + repository-projects: write jobs: initial-review: diff --git a/.github/workflows/move-ready-for-review-prs.yml b/.github/workflows/move-ready-for-review-prs.yml index 2c9c0f52998..eddc55a873c 100644 --- a/.github/workflows/move-ready-for-review-prs.yml +++ b/.github/workflows/move-ready-for-review-prs.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Move To Initial Review - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | // Find "Code Reviews" project manually by name matching diff --git a/.github/workflows/move-work-in-progress-prs.yml b/.github/workflows/move-work-in-progress-prs.yml index 11813607d31..95d054ed0a9 100644 --- a/.github/workflows/move-work-in-progress-prs.yml +++ b/.github/workflows/move-work-in-progress-prs.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Move To Work In Progress - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | // Find "Code Reviews" project manually by name matching diff --git a/.github/workflows/update-status-chart.yml b/.github/workflows/update-status-chart.yml index ec42d63e72d..56f60194068 100644 --- a/.github/workflows/update-status-chart.yml +++ b/.github/workflows/update-status-chart.yml @@ -12,13 +12,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout gh-pages - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: gh-pages - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: ">=20.4.0" + node-version: ">=21.4.0" - name: Install Packages run: | npm ci diff --git a/README.md b/README.md index 77e152f6742..a776788796c 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.9 Preview 1 or later. +1. Install Visual Studio 2022 17.9 Preview 2 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. @@ -156,7 +156,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.9 Preview 1 or later. +1. Install Visual Studio 2022 17.9 Preview 2 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-devops/config.yml b/azure-devops/config.yml index e426f3b78e1..86908112536 100644 --- a/azure-devops/config.yml +++ b/azure-devops/config.yml @@ -5,7 +5,7 @@ variables: - name: poolName - value: 'StlBuild-2023-11-15T0519-Pool' + value: 'StlBuild-2023-12-12T1453-Pool' readonly: true - name: poolDemands value: 'EnableSpotVM -equals true' diff --git a/azure-devops/provision-image.ps1 b/azure-devops/provision-image.ps1 index 7461fc8252e..4b37729e038 100644 --- a/azure-devops/provision-image.ps1 +++ b/azure-devops/provision-image.ps1 @@ -91,7 +91,7 @@ if ([string]::IsNullOrEmpty($AdminUserPassword)) { $PsExecPath = Join-Path $ExtractedPsToolsPath 'PsExec64.exe' # https://github.com/PowerShell/PowerShell/releases/latest - $PowerShellZipUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.3.9/PowerShell-7.3.9-win-x64.zip' + $PowerShellZipUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.4.0/PowerShell-7.4.0-win-x64.zip' Write-Host "Downloading: $PowerShellZipUrl" $ExtractedPowerShellPath = DownloadAndExtractZip -Url $PowerShellZipUrl $PwshPath = Join-Path $ExtractedPowerShellPath 'pwsh.exe' @@ -136,7 +136,7 @@ $Workloads = @( ) $VisualStudioBootstrapperUrl = 'https://aka.ms/vs/17/pre/vs_enterprise.exe' -$PythonUrl = 'https://www.python.org/ftp/python/3.12.0/python-3.12.0-amd64.exe' +$PythonUrl = 'https://www.python.org/ftp/python/3.12.1/python-3.12.1-amd64.exe' $CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_511.23_windows.exe' diff --git a/benchmarks/src/std_copy.cpp b/benchmarks/src/std_copy.cpp index 089845799b2..a96e32e1eb3 100644 --- a/benchmarks/src/std_copy.cpp +++ b/benchmarks/src/std_copy.cpp @@ -12,7 +12,6 @@ #include namespace { - template void handwritten_loop(benchmark::State& state) { const size_t r0 = static_cast(state.range(0)); diff --git a/stl/CMakeLists.txt b/stl/CMakeLists.txt index cc31a56e597..fdc305d8794 100644 --- a/stl/CMakeLists.txt +++ b/stl/CMakeLists.txt @@ -12,6 +12,7 @@ set(HEADERS ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_cxx_stdatomic.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_filebuf.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_format_ucd_tables.hpp + ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_formatter.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_int128.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_iter_core.hpp ${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_print.hpp diff --git a/stl/inc/__msvc_bit_utils.hpp b/stl/inc/__msvc_bit_utils.hpp index 4d29b905e1e..febf026e595 100644 --- a/stl/inc/__msvc_bit_utils.hpp +++ b/stl/inc/__msvc_bit_utils.hpp @@ -14,8 +14,8 @@ #include _STL_INTRIN_HEADER // TRANSITION, GH-2129, move down to _Arm64_popcount -#if (defined(_M_ARM64) || defined(_M_ARM64EC)) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) \ - && !defined(__INTEL_COMPILER) && !defined(__clang__) // TRANSITION, LLVM-51488 +#if (defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64)) && !defined(_M_CEE_PURE) \ + && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) && !defined(__clang__) // TRANSITION, LLVM-51488 #define _HAS_NEON_INTRINSICS 1 #else // ^^^ intrinsics available / intrinsics unavailable vvv #define _HAS_NEON_INTRINSICS 0 @@ -70,7 +70,7 @@ _NODISCARD constexpr int _Countl_zero_fallback(_Ty _Val) noexcept { #endif // ^^^ intrinsics unavailable ^^^ #if _HAS_COUNTL_ZERO_INTRINSICS -#if defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) +#if (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) template _NODISCARD int _Countl_zero_lzcnt(const _Ty _Val) noexcept { constexpr int _Digits = _Unsigned_integer_digits<_Ty>; @@ -136,9 +136,9 @@ _NODISCARD int _Checked_x86_x64_countl_zero(const _Ty _Val) noexcept { } #endif // ^^^ !defined(__AVX2__) ^^^ } -#endif // defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) +#endif // (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) -#if defined(_M_ARM) || defined(_M_ARM64) +#if defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) #ifdef __clang__ // TRANSITION, GH-1586 _NODISCARD constexpr int _Clang_arm_arm64_countl_zero(const unsigned short _Val) { return __builtin_clzs(_Val); @@ -179,7 +179,7 @@ _NODISCARD int _Checked_arm_arm64_countl_zero(const _Ty _Val) noexcept { } #endif // TRANSITION, GH-1586 } -#endif // defined(_M_ARM) || defined(_M_ARM64) +#endif // defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) #endif // _HAS_COUNTL_ZERO_INTRINSICS // Implementation of countr_zero without using specialized CPU instructions. @@ -196,14 +196,14 @@ _NODISCARD constexpr int _Countr_zero_fallback(const _Ty _Val) noexcept { template _NODISCARD constexpr int _Popcount_fallback(_Ty _Val) noexcept { constexpr int _Digits = _Unsigned_integer_digits<_Ty>; -#if defined(_M_IX86) || defined(_M_ARM) +#if (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || defined(_M_ARM) if constexpr (_Digits == 64) { // 64-bit bit operations on architectures without 64-bit registers are less efficient, // hence we split the value so that it fits in 32-bit registers return _Popcount_fallback(static_cast(_Val)) + _Popcount_fallback(static_cast(_Val >> 32)); } -#endif // defined(_M_IX86) || defined(_M_ARM) +#endif // (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || defined(_M_ARM) // we static_cast these bit patterns in order to truncate them to the correct size _Val = static_cast<_Ty>(_Val - ((_Val >> 1) & static_cast<_Ty>(0x5555'5555'5555'5555ull))); _Val = static_cast<_Ty>((_Val & static_cast<_Ty>(0x3333'3333'3333'3333ull)) @@ -215,8 +215,8 @@ _NODISCARD constexpr int _Popcount_fallback(_Ty _Val) noexcept { return static_cast(_Val >> (_Digits - 8)); } -#if (defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC))) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) \ - && !defined(__INTEL_COMPILER) +#if ((defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC))) \ + && !defined(_M_CEE_PURE) && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) #define _HAS_TZCNT_BSF_INTRINSICS 1 #else // ^^^ intrinsics available / intrinsics unavailable vvv #define _HAS_TZCNT_BSF_INTRINSICS 0 @@ -310,8 +310,8 @@ _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_ARM64EC))) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) \ - && !defined(__INTEL_COMPILER) +#if ((defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC))) \ + && !defined(_M_CEE_PURE) && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) #define _HAS_POPCNT_INTRINSICS 1 #else // ^^^ intrinsics available / intrinsics unavailable vvv #define _HAS_POPCNT_INTRINSICS 0 diff --git a/stl/inc/__msvc_chrono.hpp b/stl/inc/__msvc_chrono.hpp index e3f8a813d4f..265522d305f 100644 --- a/stl/inc/__msvc_chrono.hpp +++ b/stl/inc/__msvc_chrono.hpp @@ -75,7 +75,7 @@ namespace chrono { _EXPORT_STD template , int> = 0> constexpr _To duration_cast(const duration<_Rep, _Period>&) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v); // strengthened + is_arithmetic_v<_Rep> && is_arithmetic_v); // strengthened _EXPORT_STD template class duration { // represents a time duration @@ -94,7 +94,7 @@ namespace chrono { && (treat_as_floating_point_v<_Rep> || !treat_as_floating_point_v<_Rep2>), int> = 0> constexpr explicit duration(const _Rep2& _Val) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v<_Rep2>) // strengthened + is_arithmetic_v<_Rep> && is_arithmetic_v<_Rep2>) // strengthened : _MyRep(static_cast<_Rep>(_Val)) {} template ::den == 1 && !treat_as_floating_point_v<_Rep2>), int> = 0> constexpr duration(const duration<_Rep2, _Period2>& _Dur) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v<_Rep2>) // strengthened + is_arithmetic_v<_Rep> && is_arithmetic_v<_Rep2>) // strengthened : _MyRep(_CHRONO duration_cast(_Dur).count()) {} _NODISCARD constexpr _Rep count() const noexcept(is_arithmetic_v<_Rep>) /* strengthened */ { @@ -204,7 +204,7 @@ namespace chrono { template , int> = 0> constexpr time_point(const time_point<_Clock, _Duration2>& _Tp) noexcept( - is_arithmetic_v&& is_arithmetic_v) // strengthened + is_arithmetic_v && is_arithmetic_v) // strengthened : _MyDur(_Tp.time_since_epoch()) {} _NODISCARD constexpr _Duration time_since_epoch() const noexcept(is_arithmetic_v) /* strengthened */ { @@ -278,7 +278,7 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr common_type_t, duration<_Rep2, _Period2>> operator+(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + is_arithmetic_v<_Rep1> && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CD = common_type_t, duration<_Rep2, _Period2>>; return _CD(_CD(_Left).count() + _CD(_Right).count()); } @@ -286,7 +286,7 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr common_type_t, duration<_Rep2, _Period2>> operator-(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + is_arithmetic_v<_Rep1> && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CD = common_type_t, duration<_Rep2, _Period2>>; return _CD(_CD(_Left).count() - _CD(_Right).count()); } @@ -295,7 +295,7 @@ namespace chrono { enable_if_t>, int> = 0> _NODISCARD constexpr duration, _Period1> operator*( const duration<_Rep1, _Period1>& _Left, - const _Rep2& _Right) noexcept(is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + const _Rep2& _Right) noexcept(is_arithmetic_v<_Rep1> && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CR = common_type_t<_Rep1, _Rep2>; using _CD = duration<_CR, _Period1>; return _CD(_CD(_Left).count() * _Right); @@ -303,9 +303,9 @@ namespace chrono { _EXPORT_STD template >, int> = 0> - _NODISCARD constexpr duration, _Period2> - operator*(const _Rep1& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr duration, _Period2> operator*(const _Rep1& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { return _Right * _Left; } @@ -328,16 +328,16 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr typename _Duration_div_mod, _Period1, _Rep2>::type operator/( const duration<_Rep1, _Period1>& _Left, - const _Rep2& _Right) noexcept(is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + const _Rep2& _Right) noexcept(is_arithmetic_v<_Rep1> && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CR = common_type_t<_Rep1, _Rep2>; using _CD = duration<_CR, _Period1>; return _CD(_CD(_Left).count() / _Right); } _EXPORT_STD template - _NODISCARD constexpr common_type_t<_Rep1, _Rep2> - operator/(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr common_type_t<_Rep1, _Rep2> operator/(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CD = common_type_t, duration<_Rep2, _Period2>>; return _CD(_Left).count() / _CD(_Right).count(); } @@ -345,7 +345,7 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr typename _Duration_div_mod, _Period1, _Rep2>::type operator%( const duration<_Rep1, _Period1>& _Left, - const _Rep2& _Right) noexcept(is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + const _Rep2& _Right) noexcept(is_arithmetic_v<_Rep1> && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CR = common_type_t<_Rep1, _Rep2>; using _CD = duration<_CR, _Period1>; return _CD(_CD(_Left).count() % _Right); @@ -354,63 +354,63 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr common_type_t, duration<_Rep2, _Period2>> operator%(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + is_arithmetic_v<_Rep1> && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CD = common_type_t, duration<_Rep2, _Period2>>; return _CD(_CD(_Left).count() % _CD(_Right).count()); } _EXPORT_STD template - _NODISCARD constexpr bool - operator==(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr bool operator==(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CT = common_type_t, duration<_Rep2, _Period2>>; return _CT(_Left).count() == _CT(_Right).count(); } #if !_HAS_CXX20 template - _NODISCARD constexpr bool - operator!=(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr bool operator!=(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { return !(_Left == _Right); } #endif // !_HAS_CXX20 _EXPORT_STD template - _NODISCARD constexpr bool - operator<(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr bool operator<(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CT = common_type_t, duration<_Rep2, _Period2>>; return _CT(_Left).count() < _CT(_Right).count(); } _EXPORT_STD template - _NODISCARD constexpr bool - operator<=(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr bool operator<=(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { return !(_Right < _Left); } _EXPORT_STD template - _NODISCARD constexpr bool - operator>(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr bool operator>(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { return _Right < _Left; } _EXPORT_STD template - _NODISCARD constexpr bool - operator>=(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr bool operator>=(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { return !(_Left < _Right); } #ifdef __cpp_lib_concepts _EXPORT_STD template requires three_way_comparable, duration<_Rep2, _Period2>>::rep> - _NODISCARD constexpr auto - operator<=>(const duration<_Rep1, _Period1>& _Left, const duration<_Rep2, _Period2>& _Right) noexcept( - is_arithmetic_v<_Rep1>&& is_arithmetic_v<_Rep2>) /* strengthened */ { + _NODISCARD constexpr auto operator<=>(const duration<_Rep1, _Period1>& _Left, + const duration<_Rep2, _Period2>& _Right) noexcept(is_arithmetic_v<_Rep1> + && is_arithmetic_v<_Rep2>) /* strengthened */ { using _CT = common_type_t, duration<_Rep2, _Period2>>; return _CT(_Left).count() <=> _CT(_Right).count(); } @@ -418,7 +418,7 @@ namespace chrono { _EXPORT_STD template , int> /* = 0 */> _NODISCARD constexpr _To duration_cast(const duration<_Rep, _Period>& _Dur) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v<_Rep> && is_arithmetic_v) /* strengthened */ { // convert duration to another duration; truncate using _CF = ratio_divide<_Period, typename _To::period>; @@ -448,7 +448,7 @@ namespace chrono { _EXPORT_STD template , int> = 0> _NODISCARD constexpr _To floor(const duration<_Rep, _Period>& _Dur) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v<_Rep> && is_arithmetic_v) /* strengthened */ { // convert duration to another duration; round towards negative infinity // i.e. the greatest integral result such that the result <= _Dur const _To _Casted{_CHRONO duration_cast<_To>(_Dur)}; @@ -461,7 +461,7 @@ namespace chrono { _EXPORT_STD template , int> = 0> _NODISCARD constexpr _To ceil(const duration<_Rep, _Period>& _Dur) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v<_Rep> && is_arithmetic_v) /* strengthened */ { // convert duration to another duration; round towards positive infinity // i.e. the least integral result such that _Dur <= the result const _To _Casted{_CHRONO duration_cast<_To>(_Dur)}; @@ -481,7 +481,7 @@ namespace chrono { _EXPORT_STD template && !treat_as_floating_point_v, int> = 0> _NODISCARD constexpr _To round(const duration<_Rep, _Period>& _Dur) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v<_Rep> && is_arithmetic_v) /* strengthened */ { // convert duration to another duration, round to nearest, ties to even const _To _Floored{_CHRONO floor<_To>(_Dur)}; const _To _Ceiled{_Floored + _To{1}}; @@ -522,7 +522,7 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr time_point<_Clock, common_type_t<_Duration, duration<_Rep, _Period>>> operator+(const time_point<_Clock, _Duration>& _Left, const duration<_Rep, _Period>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v<_Rep>) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v<_Rep>) /* strengthened */ { using _RT = time_point<_Clock, common_type_t<_Duration, duration<_Rep, _Period>>>; return _RT(_Left.time_since_epoch() + _Right); } @@ -530,14 +530,14 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr time_point<_Clock, common_type_t, _Duration>> operator+(const duration<_Rep, _Period>& _Left, const time_point<_Clock, _Duration>& _Right) noexcept( - is_arithmetic_v<_Rep>&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v<_Rep> && is_arithmetic_v) /* strengthened */ { return _Right + _Left; } _EXPORT_STD template _NODISCARD constexpr time_point<_Clock, common_type_t<_Duration, duration<_Rep, _Period>>> operator-(const time_point<_Clock, _Duration>& _Left, const duration<_Rep, _Period>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v<_Rep>) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v<_Rep>) /* strengthened */ { using _RT = time_point<_Clock, common_type_t<_Duration, duration<_Rep, _Period>>>; return _RT(_Left.time_since_epoch() - _Right); } @@ -545,14 +545,14 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr common_type_t<_Duration1, _Duration2> operator-(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return _Left.time_since_epoch() - _Right.time_since_epoch(); } _EXPORT_STD template _NODISCARD constexpr bool operator==(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return _Left.time_since_epoch() == _Right.time_since_epoch(); } @@ -560,7 +560,7 @@ namespace chrono { template _NODISCARD constexpr bool operator!=(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return !(_Left == _Right); } #endif // !_HAS_CXX20 @@ -568,28 +568,28 @@ namespace chrono { _EXPORT_STD template _NODISCARD constexpr bool operator<(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return _Left.time_since_epoch() < _Right.time_since_epoch(); } _EXPORT_STD template _NODISCARD constexpr bool operator<=(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return !(_Right < _Left); } _EXPORT_STD template _NODISCARD constexpr bool operator>(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return _Right < _Left; } _EXPORT_STD template _NODISCARD constexpr bool operator>=(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return !(_Left < _Right); } @@ -597,28 +597,28 @@ namespace chrono { _EXPORT_STD template _Duration2> _NODISCARD constexpr auto operator<=>(const time_point<_Clock, _Duration1>& _Left, const time_point<_Clock, _Duration2>& _Right) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { return _Left.time_since_epoch() <=> _Right.time_since_epoch(); } #endif // defined(__cpp_lib_concepts) _EXPORT_STD template , int> = 0> _NODISCARD constexpr time_point<_Clock, _To> time_point_cast(const time_point<_Clock, _Duration>& _Time) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { // change the duration type of a time_point; truncate return time_point<_Clock, _To>(_CHRONO duration_cast<_To>(_Time.time_since_epoch())); } _EXPORT_STD template , int> = 0> _NODISCARD constexpr time_point<_Clock, _To> floor(const time_point<_Clock, _Duration>& _Time) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { // change the duration type of a time_point; round towards negative infinity return time_point<_Clock, _To>(_CHRONO floor<_To>(_Time.time_since_epoch())); } _EXPORT_STD template , int> = 0> _NODISCARD constexpr time_point<_Clock, _To> ceil(const time_point<_Clock, _Duration>& _Time) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { // change the duration type of a time_point; round towards positive infinity return time_point<_Clock, _To>(_CHRONO ceil<_To>(_Time.time_since_epoch())); } @@ -626,7 +626,7 @@ namespace chrono { _EXPORT_STD template && !treat_as_floating_point_v, int> = 0> _NODISCARD constexpr time_point<_Clock, _To> round(const time_point<_Clock, _Duration>& _Time) noexcept( - is_arithmetic_v&& is_arithmetic_v) /* strengthened */ { + is_arithmetic_v && is_arithmetic_v) /* strengthened */ { // change the duration type of a time_point; round to nearest, ties to even return time_point<_Clock, _To>(_CHRONO round<_To>(_Time.time_since_epoch())); } diff --git a/stl/inc/__msvc_formatter.hpp b/stl/inc/__msvc_formatter.hpp new file mode 100644 index 00000000000..afba40829b4 --- /dev/null +++ b/stl/inc/__msvc_formatter.hpp @@ -0,0 +1,277 @@ +// __msvc_formatter.hpp internal header + +// Copyright (c) Microsoft Corporation. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +// NOTE: +// The contents of this header are derived in part from libfmt under the following license: + +// Copyright (c) 2012 - present, Victor Zverovich +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// --- Optional exception to the license --- +// +// As an exception, if, as a result of your compiling your source code, portions +// of this Software are embedded into a machine-executable object form of such +// source code, you may redistribute such embedded portions in such object form +// without including the above copyright and permission notices. + +#ifndef __MSVC_FORMATTER_HPP +#define __MSVC_FORMATTER_HPP +#include +#if _STL_COMPILER_PREPROCESSOR + +#if !_HAS_CXX20 || !defined(__cpp_lib_concepts) // TRANSITION, GH-395 +#error The contents of are only available with C++20. (Also, you should not include this internal header.) +#endif // !_HAS_CXX20 || !defined(__cpp_lib_concepts) + +#include +#include +#include +#include + +#pragma pack(push, _CRT_PACKING) +#pragma warning(push, _STL_WARNING_LEVEL) +#pragma warning(disable : _STL_DISABLED_WARNINGS) +_STL_DISABLE_CLANG_WARNINGS +#pragma push_macro("new") +#undef new + +_STD_BEGIN +#if _HAS_CXX23 +#define _FMT_P2286_BEGIN inline namespace __p2286 { +#define _FMT_P2286_END } +#else // ^^^ _HAS_CXX23 / !_HAS_CXX23 vvv +#define _FMT_P2286_BEGIN +#define _FMT_P2286_END +#endif // ^^^ !_HAS_CXX23 ^^^ + +enum class _Fmt_align : uint8_t { _None, _Left, _Right, _Center }; + +enum class _Fmt_sign : uint8_t { _None, _Plus, _Minus, _Space }; + +enum class _Basic_format_arg_type : uint8_t { + _None, + _Int_type, + _UInt_type, + _Long_long_type, + _ULong_long_type, + _Bool_type, + _Char_type, + _Float_type, + _Double_type, + _Long_double_type, + _Pointer_type, + _CString_type, + _String_type, + _Custom_type, +}; +static_assert(static_cast(_Basic_format_arg_type::_Custom_type) < 16, "must fit in 4-bit bitfield"); + +#if _HAS_CXX23 +_NODISCARD consteval bool _Is_debug_enabled_fmt_type(_Basic_format_arg_type _Ty) { + return _Ty == _Basic_format_arg_type::_Char_type || _Ty == _Basic_format_arg_type::_CString_type + || _Ty == _Basic_format_arg_type::_String_type; +} +#endif // _HAS_CXX23 + +template +struct _Basic_format_specs { + int _Width = 0; + int _Precision = -1; + char _Type = '\0'; + _Fmt_align _Alignment = _Fmt_align::_None; + _Fmt_sign _Sgn = _Fmt_sign::_None; + bool _Alt = false; + bool _Localized = false; + bool _Leading_zero = false; + uint8_t _Fill_length = 1; + // At most one codepoint (so one char32_t or four utf-8 char8_t). + _CharT _Fill[4 / sizeof(_CharT)] = {_CharT{' '}}; +}; + +// Adds width and precision references to _Basic_format_specs. +// This is required for std::formatter implementations because we must +// parse the format specs without having access to the format args (via a format context). +template +struct _Dynamic_format_specs : _Basic_format_specs<_CharT> { + int _Dynamic_width_index = -1; + int _Dynamic_precision_index = -1; +}; + +_EXPORT_STD template +class basic_format_parse_context; + +template +concept _Format_supported_charT = _Is_any_of_v<_CharT, char, wchar_t>; + +// Generic formatter definition, the deleted default constructor +// makes it "disabled" as per N4950 [format.formatter.spec]/5 +_EXPORT_STD template +struct formatter { + formatter() = delete; + formatter(const formatter&) = delete; + formatter operator=(const formatter&) = delete; +}; + +_FMT_P2286_BEGIN +// TRANSITION, VSO-1236041: Avoid declaring and defining member functions in different headers. +template <_Basic_format_arg_type _ArgType, class _CharT, class _Pc> +constexpr _Pc::iterator _Formatter_base_parse(_Dynamic_format_specs<_CharT>& _Specs, _Pc& _ParseCtx); + +template +_FormatContext::iterator _Formatter_base_format( + const _Dynamic_format_specs<_CharT>& _Specs, const _Ty& _Val, _FormatContext& _FormatCtx); + +template +struct _Formatter_base { +public: +#if _HAS_CXX23 + constexpr void _Set_debug_format() noexcept + requires (_Is_debug_enabled_fmt_type(_ArgType)) + { + _Specs._Type = '?'; + } +#endif // _HAS_CXX23 + + template > + constexpr _Pc::iterator parse(type_identity_t<_Pc&> _ParseCtx) { + return _Formatter_base_parse<_ArgType>(_Specs, _ParseCtx); + } + + template + _FormatContext::iterator format(const _Ty& _Val, _FormatContext& _FormatCtx) const { + return _Formatter_base_format(_Specs, _Val, _FormatCtx); + } + +private: + _Dynamic_format_specs<_CharT> _Specs; +}; +_FMT_P2286_END + +#define _FORMAT_SPECIALIZE_FOR(_Type, _ArgType) \ + template <_Format_supported_charT _CharT> \ + struct formatter<_Type, _CharT> : _Formatter_base<_Type, _CharT, _ArgType> {} + +_FORMAT_SPECIALIZE_FOR(int, _Basic_format_arg_type::_Int_type); +_FORMAT_SPECIALIZE_FOR(unsigned int, _Basic_format_arg_type::_UInt_type); +_FORMAT_SPECIALIZE_FOR(long long, _Basic_format_arg_type::_Long_long_type); +_FORMAT_SPECIALIZE_FOR(unsigned long long, _Basic_format_arg_type::_ULong_long_type); +_FORMAT_SPECIALIZE_FOR(bool, _Basic_format_arg_type::_Bool_type); +_FORMAT_SPECIALIZE_FOR(float, _Basic_format_arg_type::_Float_type); +_FORMAT_SPECIALIZE_FOR(double, _Basic_format_arg_type::_Double_type); +_FORMAT_SPECIALIZE_FOR(long double, _Basic_format_arg_type::_Long_double_type); +_FORMAT_SPECIALIZE_FOR(nullptr_t, _Basic_format_arg_type::_Pointer_type); +_FORMAT_SPECIALIZE_FOR(void*, _Basic_format_arg_type::_Pointer_type); +_FORMAT_SPECIALIZE_FOR(const void*, _Basic_format_arg_type::_Pointer_type); +_FORMAT_SPECIALIZE_FOR(short, _Basic_format_arg_type::_Int_type); +_FORMAT_SPECIALIZE_FOR(unsigned short, _Basic_format_arg_type::_UInt_type); +_FORMAT_SPECIALIZE_FOR(long, _Basic_format_arg_type::_Int_type); +_FORMAT_SPECIALIZE_FOR(unsigned long, _Basic_format_arg_type::_UInt_type); +_FORMAT_SPECIALIZE_FOR(signed char, _Basic_format_arg_type::_Int_type); +_FORMAT_SPECIALIZE_FOR(unsigned char, _Basic_format_arg_type::_UInt_type); + +#undef _FORMAT_SPECIALIZE_FOR + +// not using the macro because we'd like to add 'set_debug_format' member function in C++23 mode +template <_Format_supported_charT _CharT> +struct formatter : _Formatter_base { +#if _HAS_CXX23 + constexpr void set_debug_format() noexcept { + this->_Set_debug_format(); + } +#endif // _HAS_CXX23 +}; + +// not using the macro because we'd like to avoid the formatter specialization +template <> +struct formatter : _Formatter_base { +#if _HAS_CXX23 + constexpr void set_debug_format() noexcept { + _Set_debug_format(); + } +#endif // _HAS_CXX23 +}; + +// We could use the macro for these specializations, but it's confusing to refer to symbols that are defined +// inside the macro in the macro's "call". +template <_Format_supported_charT _CharT> +struct formatter<_CharT*, _CharT> : _Formatter_base<_CharT*, _CharT, _Basic_format_arg_type::_CString_type> { +#if _HAS_CXX23 + constexpr void set_debug_format() noexcept { + this->_Set_debug_format(); + } +#endif // _HAS_CXX23 +}; + +template <_Format_supported_charT _CharT> +struct formatter + : _Formatter_base { +#if _HAS_CXX23 + constexpr void set_debug_format() noexcept { + this->_Set_debug_format(); + } +#endif // _HAS_CXX23 +}; + +template <_Format_supported_charT _CharT, size_t _Nx> +struct formatter<_CharT[_Nx], _CharT> : _Formatter_base<_CharT[_Nx], _CharT, _Basic_format_arg_type::_CString_type> { +#if _HAS_CXX23 + constexpr void set_debug_format() noexcept { + this->_Set_debug_format(); + } +#endif // _HAS_CXX23 +}; + +_EXPORT_STD template +class basic_string; + +_EXPORT_STD template +class basic_string_view; + +template <_Format_supported_charT _CharT, class _Traits, class _Allocator> +struct formatter, _CharT> + : _Formatter_base, _CharT, _Basic_format_arg_type::_String_type> { +#if _HAS_CXX23 + constexpr void set_debug_format() noexcept { + this->_Set_debug_format(); + } +#endif // _HAS_CXX23 +}; + +template <_Format_supported_charT _CharT, class _Traits> +struct formatter, _CharT> + : _Formatter_base, _CharT, _Basic_format_arg_type::_String_type> { +#if _HAS_CXX23 + constexpr void set_debug_format() noexcept { + this->_Set_debug_format(); + } +#endif // _HAS_CXX23 +}; +_STD_END + +#pragma pop_macro("new") +_STL_RESTORE_CLANG_WARNINGS +#pragma warning(pop) +#pragma pack(pop) + +#endif // _STL_COMPILER_PREPROCESSOR +#endif // __MSVC_FORMATTER_HPP diff --git a/stl/inc/__msvc_int128.hpp b/stl/inc/__msvc_int128.hpp index 7c7443c4075..146f2f85cb9 100644 --- a/stl/inc/__msvc_int128.hpp +++ b/stl/inc/__msvc_int128.hpp @@ -56,15 +56,15 @@ template _NODISCARD constexpr int _Countl_zero_internal(const _Ty _Val) noexcept { _STL_INTERNAL_STATIC_ASSERT(_Is_standard_unsigned_integer<_Ty>); #if _HAS_COUNTL_ZERO_INTRINSICS -#if defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) +#if (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) if (!_Is_constant_evaluated()) { return _Checked_x86_x64_countl_zero(_Val); } -#elif defined(_M_ARM) || defined(_M_ARM64) +#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) if (!_Is_constant_evaluated()) { return _Checked_arm_arm64_countl_zero(_Val); } -#endif // defined(_M_ARM) || defined(_M_ARM64) +#endif // defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) #endif // _HAS_COUNTL_ZERO_INTRINSICS return _Countl_zero_fallback(_Val); diff --git a/stl/inc/__msvc_sanitizer_annotate_container.hpp b/stl/inc/__msvc_sanitizer_annotate_container.hpp index 05e392d2e81..6007c33687e 100644 --- a/stl/inc/__msvc_sanitizer_annotate_container.hpp +++ b/stl/inc/__msvc_sanitizer_annotate_container.hpp @@ -136,30 +136,30 @@ void __cdecl __sanitizer_annotate_contiguous_container( #ifdef _M_ARM64EC #pragma comment(linker, \ - "/alternatename:#__sanitizer_annotate_contiguous_container=#__sanitizer_annotate_contiguous_container_default") + "/alternatename:#__sanitizer_annotate_contiguous_container=#__sanitizer_annotate_contiguous_container_default") #pragma comment(linker, \ - "/alternatename:__sanitizer_annotate_contiguous_container=__sanitizer_annotate_contiguous_container_default") + "/alternatename:__sanitizer_annotate_contiguous_container=__sanitizer_annotate_contiguous_container_default") #pragma comment(linker, "/alternatename:#_Asan_vector_should_annotate=#_Asan_vector_should_annotate_default") #pragma comment(linker, "/alternatename:_Asan_vector_should_annotate=_Asan_vector_should_annotate_default") #pragma comment(linker, "/alternatename:#_Asan_string_should_annotate=#_Asan_string_should_annotate_default") #pragma comment(linker, "/alternatename:_Asan_string_should_annotate=_Asan_string_should_annotate_default") #elif defined(_M_HYBRID) #pragma comment(linker, \ - "/alternatename:#__sanitizer_annotate_contiguous_container=#__sanitizer_annotate_contiguous_container_default") + "/alternatename:#__sanitizer_annotate_contiguous_container=#__sanitizer_annotate_contiguous_container_default") #pragma comment(linker, \ - "/alternatename:___sanitizer_annotate_contiguous_container=___sanitizer_annotate_contiguous_container_default") + "/alternatename:___sanitizer_annotate_contiguous_container=___sanitizer_annotate_contiguous_container_default") #pragma comment(linker, "/alternatename:#_Asan_vector_should_annotate=#_Asan_vector_should_annotate_default") #pragma comment(linker, "/alternatename:__Asan_vector_should_annotate=__Asan_vector_should_annotate_default") #pragma comment(linker, "/alternatename:#_Asan_string_should_annotate=#_Asan_string_should_annotate_default") #pragma comment(linker, "/alternatename:__Asan_string_should_annotate=__Asan_string_should_annotate_default") #elif defined(_M_IX86) #pragma comment(linker, \ - "/alternatename:___sanitizer_annotate_contiguous_container=___sanitizer_annotate_contiguous_container_default") + "/alternatename:___sanitizer_annotate_contiguous_container=___sanitizer_annotate_contiguous_container_default") #pragma comment(linker, "/alternatename:__Asan_vector_should_annotate=__Asan_vector_should_annotate_default") #pragma comment(linker, "/alternatename:__Asan_string_should_annotate=__Asan_string_should_annotate_default") #elif defined(_M_X64) || defined(_M_ARM) || defined(_M_ARM64) #pragma comment(linker, \ - "/alternatename:__sanitizer_annotate_contiguous_container=__sanitizer_annotate_contiguous_container_default") + "/alternatename:__sanitizer_annotate_contiguous_container=__sanitizer_annotate_contiguous_container_default") #pragma comment(linker, "/alternatename:_Asan_vector_should_annotate=_Asan_vector_should_annotate_default") #pragma comment(linker, "/alternatename:_Asan_string_should_annotate=_Asan_string_should_annotate_default") #else // ^^^ known architecture / unknown architecture vvv diff --git a/stl/inc/algorithm b/stl/inc/algorithm index 21905a2bbae..95900a911bc 100644 --- a/stl/inc/algorithm +++ b/stl/inc/algorithm @@ -69,13 +69,13 @@ _STD pair<_Ty*, _Ty*> __std_minmax_element(_Ty* _First, _Ty* _Last) noexcept { _Min_max_element_t _Res; if constexpr (sizeof(_Ty) == 1) { - _Res = __std_minmax_element_1(_First, _Last, _Signed); + _Res = ::__std_minmax_element_1(_First, _Last, _Signed); } else if constexpr (sizeof(_Ty) == 2) { - _Res = __std_minmax_element_2(_First, _Last, _Signed); + _Res = ::__std_minmax_element_2(_First, _Last, _Signed); } else if constexpr (sizeof(_Ty) == 4) { - _Res = __std_minmax_element_4(_First, _Last, _Signed); + _Res = ::__std_minmax_element_4(_First, _Last, _Signed); } else if constexpr (sizeof(_Ty) == 8) { - _Res = __std_minmax_element_8(_First, _Last, _Signed); + _Res = ::__std_minmax_element_8(_First, _Last, _Signed); } else { static_assert(_STD _Always_false<_Ty>, "Unexpected size"); } @@ -937,7 +937,8 @@ namespace ranges { if constexpr (bidirectional_iterator<_It1> && bidirectional_iterator<_It2>) { // determine final iterator values auto _Final1 = _RANGES _Find_last_iterator(_First1, _Last1, _Count); - auto _Final2 = _RANGES _Find_last_iterator(_First2, _Last2, _Count); + using _Diff2 = iter_difference_t<_It2>; // avoid truncation warnings; ranges are the same length + auto _Final2 = _RANGES _Find_last_iterator(_First2, _Last2, static_cast<_Diff2>(_Count)); for (;;) { // trim matching suffixes --_Final1; @@ -5411,7 +5412,8 @@ void random_shuffle(_RanIt _First, _RanIt _Last) { // shuffle [_First, _Last) us #if _HAS_CXX20 _EXPORT_STD template -constexpr _FwdIt shift_left(_FwdIt _First, const _FwdIt _Last, _Iter_diff_t<_FwdIt> _Pos_to_shift) { +constexpr _FwdIt shift_left( + _FwdIt _First, const _FwdIt _Last, typename iterator_traits<_FwdIt>::difference_type _Pos_to_shift) { // shift [_First, _Last) left by _Pos_to_shift // positions; returns the end of the resulting range _STL_ASSERT(_Pos_to_shift >= 0, "shift count must be non-negative (N4950 [alg.shift]/1)"); @@ -5445,7 +5447,8 @@ constexpr _FwdIt shift_left(_FwdIt _First, const _FwdIt _Last, _Iter_diff_t<_Fwd } _EXPORT_STD template = 0> -_FwdIt shift_left(_ExPo&&, _FwdIt _First, _FwdIt _Last, _Iter_diff_t<_FwdIt> _Pos_to_shift) noexcept /* terminates */ { +_FwdIt shift_left(_ExPo&&, _FwdIt _First, _FwdIt _Last, + typename iterator_traits<_FwdIt>::difference_type _Pos_to_shift) noexcept /* terminates */ { // shift [_First, _Last) left by _Pos_to_shift positions // not parallelized as benchmarks show it isn't worth it _REQUIRE_CPP17_MUTABLE_ITERATOR(_FwdIt); @@ -5453,7 +5456,8 @@ _FwdIt shift_left(_ExPo&&, _FwdIt _First, _FwdIt _Last, _Iter_diff_t<_FwdIt> _Po } _EXPORT_STD template -constexpr _FwdIt shift_right(_FwdIt _First, const _FwdIt _Last, _Iter_diff_t<_FwdIt> _Pos_to_shift) { +constexpr _FwdIt shift_right( + _FwdIt _First, const _FwdIt _Last, typename iterator_traits<_FwdIt>::difference_type _Pos_to_shift) { // shift [_First, _Last) right by _Pos_to_shift // positions; returns the beginning of the resulting range _STL_ASSERT(_Pos_to_shift >= 0, "shift count must be non-negative (N4950 [alg.shift]/5)"); @@ -5527,7 +5531,8 @@ constexpr _FwdIt shift_right(_FwdIt _First, const _FwdIt _Last, _Iter_diff_t<_Fw } _EXPORT_STD template = 0> -_FwdIt shift_right(_ExPo&&, _FwdIt _First, _FwdIt _Last, _Iter_diff_t<_FwdIt> _Pos_to_shift) noexcept /* terminates */ { +_FwdIt shift_right(_ExPo&&, _FwdIt _First, _FwdIt _Last, + typename iterator_traits<_FwdIt>::difference_type _Pos_to_shift) noexcept /* terminates */ { // shift [_First, _Last) right by _Pos_to_shift positions // not parallelized as benchmarks show it isn't worth it _REQUIRE_CPP17_MUTABLE_ITERATOR(_FwdIt); @@ -9729,8 +9734,8 @@ constexpr pair<_FwdIt, _FwdIt> _Minmax_element_unchecked(_FwdIt _First, _FwdIt _ #if _USE_STD_VECTOR_ALGORITHMS if constexpr (_Is_min_max_optimization_safe<_FwdIt, _Pr>) { if (!_Is_constant_evaluated()) { - const auto _First_ptr = _To_address(_First); - const auto _Result = _STD __std_minmax_element(_First_ptr, _To_address(_Last)); + const auto _First_ptr = _STD _To_address(_First); + const auto _Result = _STD __std_minmax_element(_First_ptr, _STD _To_address(_Last)); if constexpr (is_pointer_v<_FwdIt>) { return _Result; } else { @@ -9781,10 +9786,11 @@ constexpr pair<_FwdIt, _FwdIt> _Minmax_element_unchecked(_FwdIt _First, _FwdIt _ _EXPORT_STD template _NODISCARD constexpr pair<_FwdIt, _FwdIt> minmax_element(_FwdIt _First, _FwdIt _Last, _Pr _Pred) { // find smallest and largest elements - _Adl_verify_range(_First, _Last); - const auto _Result = _STD _Minmax_element_unchecked(_Get_unwrapped(_First), _Get_unwrapped(_Last), _Pass_fn(_Pred)); - _Seek_wrapped(_Last, _Result.second); - _Seek_wrapped(_First, _Result.first); + _STD _Adl_verify_range(_First, _Last); + const auto _Result = + _STD _Minmax_element_unchecked(_STD _Get_unwrapped(_First), _STD _Get_unwrapped(_Last), _STD _Pass_fn(_Pred)); + _STD _Seek_wrapped(_Last, _Result.second); + _STD _Seek_wrapped(_First, _Result.first); return {_First, _Last}; } @@ -9801,7 +9807,7 @@ _NODISCARD pair<_FwdIt, _FwdIt> minmax_element(_ExPo&&, _FwdIt _First, _FwdIt _L // find smallest and largest elements // not parallelized at present, parallelism expected to be feasible in a future release _REQUIRE_PARALLEL_ITERATOR(_FwdIt); - return _STD minmax_element(_First, _Last, _Pass_fn(_Pred)); + return _STD minmax_element(_First, _Last, _STD _Pass_fn(_Pred)); } _EXPORT_STD template = 0> @@ -9838,8 +9844,8 @@ namespace ranges { _Rng&& _Range, _Pr _Pred = {}, _Pj _Proj = {}) const { auto _UResult = _Minmax_element_fwd_unchecked( _RANGES _Ubegin(_Range), _RANGES _Uend(_Range), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj)); - return { - _Rewrap_iterator(_Range, _STD move(_UResult.min)), _Rewrap_iterator(_Range, _STD move(_UResult.max))}; + return {_RANGES _Rewrap_iterator(_Range, _STD move(_UResult.min)), + _RANGES _Rewrap_iterator(_Range, _STD move(_UResult.max))}; } private: @@ -9929,7 +9935,8 @@ _NODISCARD constexpr pair minmax(const _Ty& _Left _MSVC_ _EXPORT_STD template _NODISCARD constexpr pair<_Ty, _Ty> minmax(initializer_list<_Ty> _Ilist, _Pr _Pred) { // return {leftmost/smallest, rightmost/largest} - pair _Res = _STD _Minmax_element_unchecked(_Ilist.begin(), _Ilist.end(), _Pass_fn(_Pred)); + pair _Res = + _STD _Minmax_element_unchecked(_Ilist.begin(), _Ilist.end(), _STD _Pass_fn(_Pred)); return pair<_Ty, _Ty>(*_Res.first, *_Res.second); } @@ -10444,7 +10451,6 @@ _NODISCARD constexpr const _Ty& clamp(const _Ty& _Val, const _Ty& _Min_val, cons const _Ty& _Tmp = _DEBUG_LT_PRED(_Pred, _Val, _Min_val) ? _Min_val : _Val; return _DEBUG_LT_PRED(_Pred, _Max_val, _Val) ? _Max_val : _Tmp; } else { - if (_DEBUG_LT_PRED(_Pred, _Max_val, _Val)) { return _Max_val; } @@ -10498,12 +10504,13 @@ namespace ranges { indirect_strict_weak_order, projected<_It2, _Pj2>> _Pr = ranges::less> _NODISCARD constexpr bool operator()(_It1 _First1, _Se1 _Last1, _It2 _First2, _Se2 _Last2, _Pr _Pred = {}, _Pj1 _Proj1 = {}, _Pj2 _Proj2 = {}) const { - _Adl_verify_range(_First1, _Last1); - _Adl_verify_range(_First2, _Last2); + _STD _Adl_verify_range(_First1, _Last1); + _STD _Adl_verify_range(_First2, _Last2); - return _Lexicographical_compare_unchecked(_Unwrap_iter<_Se1>(_STD move(_First1)), - _Unwrap_sent<_It1>(_STD move(_Last1)), _Unwrap_iter<_Se2>(_STD move(_First2)), - _Unwrap_sent<_It2>(_STD move(_Last2)), _Pass_fn(_Pred), _Pass_fn(_Proj1), _Pass_fn(_Proj2)); + return _Lexicographical_compare_unchecked(_RANGES _Unwrap_iter<_Se1>(_STD move(_First1)), + _RANGES _Unwrap_sent<_It1>(_STD move(_Last1)), _RANGES _Unwrap_iter<_Se2>(_STD move(_First2)), + _RANGES _Unwrap_sent<_It2>(_STD move(_Last2)), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj1), + _STD _Pass_fn(_Proj2)); } template struct _Atomic_storage_traits { // properties for how _Ty is stored in an atomic - static constexpr size_t _Storage_size = sizeof(_Ty) == 1 ? 1 - : sizeof(_Ty) == 2 ? 2 - : sizeof(_Ty) <= 4 ? 4 - : sizeof(_Ty) <= 8 ? 8 + static constexpr size_t _Storage_size = sizeof(_Ty) == 1 ? 1 + : sizeof(_Ty) == 2 ? 2 + : sizeof(_Ty) <= 4 ? 4 + : sizeof(_Ty) <= 8 ? 8 #if defined(_M_X64) || defined(_M_ARM64) || defined(_M_ARM64EC) : sizeof(_Ty) <= 16 ? 16 #endif // 64 bits @@ -523,7 +524,7 @@ void _Atomic_wait_direct( #if 1 // TRANSITION, ABI, GH-1151 inline void _Atomic_lock_acquire(long& _Spinlock) noexcept { -#if defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) +#if (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) // Algorithm from Intel(R) 64 and IA-32 Architectures Optimization Reference Manual, May 2020 // Example 2-4. Contended Locks with Increasing Back-off Example - Improved Version, page 2-22 // The code in mentioned manual is covered by the 0BSD license. @@ -537,25 +538,25 @@ inline void _Atomic_lock_acquire(long& _Spinlock) noexcept { _Current_backoff = _Current_backoff < _Max_backoff ? _Current_backoff << 1 : _Max_backoff; } } -#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) +#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) while (_InterlockedExchange(&_Spinlock, 1) != 0) { // TRANSITION, GH-1133: _InterlockedExchange_acq while (__iso_volatile_load32(&reinterpret_cast(_Spinlock)) != 0) { __yield(); } } -#else // ^^^ defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) ^^^ +#else // ^^^ defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) ^^^ #error Unsupported hardware #endif } inline void _Atomic_lock_release(long& _Spinlock) noexcept { -#if defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) +#if (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) _InterlockedExchange(&_Spinlock, 0); // TRANSITION, GH-1133: same as ARM -#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) +#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) _Memory_barrier(); __iso_volatile_store32(reinterpret_cast(&_Spinlock), 0); _Memory_barrier(); // TRANSITION, GH-1133: remove -#else // ^^^ defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) ^^^ +#else // ^^^ defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) ^^^ #error Unsupported hardware #endif } @@ -777,14 +778,8 @@ struct _Atomic_storage<_Ty, 1> { // lock-free using 1-byte intrinsics } } - _NODISCARD _TVal load() const noexcept { // load with sequential consistency - const auto _Mem = _Atomic_address_as(_Storage); - char _As_bytes = __iso_volatile_load8(_Mem); - _Compiler_or_memory_barrier(); - return reinterpret_cast<_TVal&>(_As_bytes); - } - - _NODISCARD _TVal load(const memory_order _Order) const noexcept { // load with given memory order + _NODISCARD _TVal load( + const memory_order _Order = memory_order_seq_cst) const noexcept { // load with given memory order const auto _Mem = _Atomic_address_as(_Storage); char _As_bytes; #if _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 @@ -885,14 +880,8 @@ struct _Atomic_storage<_Ty, 2> { // lock-free using 2-byte intrinsics } } - _NODISCARD _TVal load() const noexcept { // load with sequential consistency - const auto _Mem = _Atomic_address_as(_Storage); - short _As_bytes = __iso_volatile_load16(_Mem); - _Compiler_or_memory_barrier(); - return reinterpret_cast<_TVal&>(_As_bytes); - } - - _NODISCARD _TVal load(const memory_order _Order) const noexcept { // load with given memory order + _NODISCARD _TVal load( + const memory_order _Order = memory_order_seq_cst) const noexcept { // load with given memory order const auto _Mem = _Atomic_address_as(_Storage); short _As_bytes; #if _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 @@ -992,14 +981,8 @@ struct _Atomic_storage<_Ty, 4> { // lock-free using 4-byte intrinsics } } - _NODISCARD _TVal load() const noexcept { // load with sequential consistency - const auto _Mem = _Atomic_address_as(_Storage); - int _As_bytes = __iso_volatile_load32(_Mem); - _Compiler_or_memory_barrier(); - return reinterpret_cast<_TVal&>(_As_bytes); - } - - _NODISCARD _TVal load(const memory_order _Order) const noexcept { // load with given memory order + _NODISCARD _TVal load( + const memory_order _Order = memory_order_seq_cst) const noexcept { // load with given memory order const auto _Mem = _STD _Atomic_address_as(_Storage); int _As_bytes; #if _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 @@ -1100,18 +1083,8 @@ struct _Atomic_storage<_Ty, 8> { // lock-free using 8-byte intrinsics } } - _NODISCARD _TVal load() const noexcept { // load with sequential consistency - const auto _Mem = _Atomic_address_as(_Storage); -#ifdef _M_ARM - long long _As_bytes = __ldrexd(_Mem); -#else - long long _As_bytes = __iso_volatile_load64(_Mem); -#endif - _Compiler_or_memory_barrier(); - return reinterpret_cast<_TVal&>(_As_bytes); - } - - _NODISCARD _TVal load(const memory_order _Order) const noexcept { // load with given memory order + _NODISCARD _TVal load( + const memory_order _Order = memory_order_seq_cst) const noexcept { // load with given memory order const auto _Mem = _STD _Atomic_address_as(_Storage); long long _As_bytes; #if _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 @@ -1119,7 +1092,7 @@ struct _Atomic_storage<_Ty, 8> { // lock-free using 8-byte intrinsics #else // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 / _STD_ATOMIC_USE_ARM64_LDAR_STLR != 1 vvv #ifdef _M_ARM - _As_bytes = __ldrexd(_Mem); + _As_bytes = __ldrexd(_Mem); #else _As_bytes = __iso_volatile_load64(_Mem); #endif diff --git a/stl/inc/bit b/stl/inc/bit index e07ebe79c4b..ca62fadab6e 100644 --- a/stl/inc/bit +++ b/stl/inc/bit @@ -191,15 +191,15 @@ _NODISCARD constexpr _Ty rotr(const _Ty _Val, const int _Rotation) noexcept { _EXPORT_STD template , int> /* = 0 */> _NODISCARD constexpr int countl_zero(const _Ty _Val) noexcept { #if _HAS_COUNTL_ZERO_INTRINSICS -#if defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) +#if (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) if (!_STD is_constant_evaluated()) { return _Checked_x86_x64_countl_zero(_Val); } -#elif defined(_M_ARM) || defined(_M_ARM64) +#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) if (!_STD is_constant_evaluated()) { return _Checked_arm_arm64_countl_zero(_Val); } -#endif // defined(_M_ARM) || defined(_M_ARM64) +#endif // defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) #endif // _HAS_COUNTL_ZERO_INTRINSICS return _Countl_zero_fallback(_Val); diff --git a/stl/inc/chrono b/stl/inc/chrono index 3136ff89d21..34f10386d07 100644 --- a/stl/inc/chrono +++ b/stl/inc/chrono @@ -2202,6 +2202,10 @@ namespace chrono { return _STD move(_Icu_version) + "." + _STD to_string(_Num_leap_seconds); } + struct _Secret_tzdb_list_construct_tag { + explicit _Secret_tzdb_list_construct_tag() = default; + }; + _EXPORT_STD class tzdb_list { private: using _ListType = forward_list>; @@ -2212,7 +2216,7 @@ namespace chrono { tzdb_list(const tzdb_list&) = delete; tzdb_list& operator=(const tzdb_list&) = delete; - tzdb_list() { + explicit tzdb_list(_Secret_tzdb_list_construct_tag) { 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()); @@ -2328,7 +2332,7 @@ namespace chrono { } _TRY_BEGIN - _STD construct_at(_My_tzdb); + _STD construct_at(_My_tzdb, _Secret_tzdb_list_construct_tag{}); _CATCH(const runtime_error&) __std_free_crt(_My_tzdb); _RERAISE; @@ -5398,7 +5402,7 @@ namespace chrono { || _Is_valid_type(_Type) || _Is_valid_type(_Type) || _Is_valid_type(_Type); } else if constexpr (_Is_specialization_v<_Ty, hh_mm_ss>) { return _Type == 'H' || _Type == 'I' || _Type == 'M' || _Type == 'S' || _Type == 'r' || _Type == 'R' - || _Type == 'T' || _Type == 'p'; + || _Type == 'T' || _Type == 'p' || _Type == 'X'; } else if constexpr (_Is_any_of_v<_Ty, sys_info, local_info>) { return _Type == 'z' || _Type == 'Z'; } else if constexpr (_Is_specialization_v<_Ty, time_point>) { @@ -5407,7 +5411,7 @@ namespace chrono { return true; } } - return _Type == 'c' || _Type == 'X' || _Is_valid_type(_Type) + return _Type == 'c' || _Is_valid_type(_Type) || _Is_valid_type>(_Type); } else if constexpr (_Is_specialization_v<_Ty, _Local_time_format_t>) { return _Type == 'z' || _Type == 'Z' || _Is_valid_type(_Type); @@ -5812,7 +5816,8 @@ private: _CHRONO _Chrono_formatter<_CharT> _Impl; }; -// Per LWG-3997, the _CharT template parameter is constrained to supported character types. +// Per LWG-3997, `_CharT` in library-provided `formatter` specializations is +// constrained to character types supported by `format`. template struct formatter<_CHRONO duration<_Rep, _Period>, _CharT> diff --git a/stl/inc/complex b/stl/inc/complex index 2540fbd8eb2..dfae9d8f5ca 100644 --- a/stl/inc/complex +++ b/stl/inc/complex @@ -955,19 +955,19 @@ public: protected: template - _CONSTEXPR20 void _Add(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex&& _Is_unqual_fp<_Other>) { + _CONSTEXPR20 void _Add(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex && _Is_unqual_fp<_Other>) { this->_Val[_RE] = this->_Val[_RE] + static_cast<_Ty>(_Right.real()); this->_Val[_IM] = this->_Val[_IM] + static_cast<_Ty>(_Right.imag()); } template - _CONSTEXPR20 void _Sub(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex&& _Is_unqual_fp<_Other>) { + _CONSTEXPR20 void _Sub(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex && _Is_unqual_fp<_Other>) { this->_Val[_RE] = this->_Val[_RE] - static_cast<_Ty>(_Right.real()); this->_Val[_IM] = this->_Val[_IM] - static_cast<_Ty>(_Right.imag()); } template - _CONSTEXPR20 void _Mul(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex&& _Is_unqual_fp<_Other>) { + _CONSTEXPR20 void _Mul(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex && _Is_unqual_fp<_Other>) { _Ty _Rightreal = static_cast<_Ty>(_Right.real()); _Ty _Rightimag = static_cast<_Ty>(_Right.imag()); @@ -977,7 +977,7 @@ protected: } template - _CONSTEXPR20 void _Div(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex&& _Is_unqual_fp<_Other>) { + _CONSTEXPR20 void _Div(const complex<_Other>& _Right) noexcept(_Is_for_standard_complex && _Is_unqual_fp<_Other>) { using _Myctraits = _Ctraits<_Ty>; _Ty _Rightreal = static_cast<_Ty>(_Right.real()); @@ -2212,7 +2212,7 @@ _NODISCARD complex<_Upgrade_to_double<_Ty>> proj(_Ty _Left) noexcept /* strength _EXPORT_STD template _NODISCARD complex<_Common_float_type_t<_Ty1, _Ty2>> pow(const complex<_Ty1>& _Left, - const complex<_Ty2>& _Right) noexcept(_Is_unqual_fp<_Ty1>&& _Is_unqual_fp<_Ty2>) /* strengthened */ { + const complex<_Ty2>& _Right) noexcept(_Is_unqual_fp<_Ty1> && _Is_unqual_fp<_Ty2>) /* strengthened */ { using _Type = complex<_Common_float_type_t<_Ty1, _Ty2>>; return _STD pow(_Type(_Left), _Type(_Right)); } diff --git a/stl/inc/condition_variable b/stl/inc/condition_variable index 6f2908d2855..8e1145db88c 100644 --- a/stl/inc/condition_variable +++ b/stl/inc/condition_variable @@ -7,6 +7,11 @@ #define _CONDITION_VARIABLE_ #include #if _STL_COMPILER_PREPROCESSOR + +#ifdef _M_CEE_PURE +#error is not supported when compiling with /clr:pure. +#endif // defined(_M_CEE_PURE) + #include <__msvc_chrono.hpp> #include #include @@ -22,10 +27,6 @@ _STL_DISABLE_CLANG_WARNINGS #pragma push_macro("new") #undef new -#ifdef _M_CEE_PURE -#error is not supported when compiling with /clr:pure. -#endif // defined(_M_CEE_PURE) - _STD_BEGIN template struct _NODISCARD _Unlock_guard { diff --git a/stl/inc/deque b/stl/inc/deque index 56b0a708568..a5a97e287c0 100644 --- a/stl/inc/deque +++ b/stl/inc/deque @@ -650,6 +650,9 @@ public: _Construct_n(_Count, _Val); } +#if _HAS_CXX17 + template ::value, int> = 0> +#endif // _HAS_CXX17 deque(_CRT_GUARDOVERFLOW size_type _Count, const _Ty& _Val, const _Alloc& _Al) : _Mypair(_One_then_variadic_args_t{}, _Al) { _Construct_n(_Count, _Val); @@ -1424,7 +1427,6 @@ public: ++_Myoff(); } } - #else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL < 2 vvv _Alty_traits::destroy(_Getal(), _Get_data()._Address_subscript(_Myoff())); if (--_Mysize() == 0) { @@ -1447,7 +1449,6 @@ public: _Myoff() = 0; } } - #else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL < 2 vvv size_type _Newoff = _Myoff() + _Mysize() - 1; _Alty_traits::destroy(_Getal(), _Get_data()._Address_subscript(_Newoff)); @@ -1473,7 +1474,6 @@ public: auto _Off = static_cast(_First - begin()); auto _Count = static_cast(_Last - _First); bool _Moved = _Off > 0 && _Off + _Count < _Mysize(); - #else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL < 2 vvv auto _Off = static_cast(_First - begin()); auto _Count = static_cast(_Last - _First); @@ -1768,12 +1768,12 @@ _NODISCARD bool operator>=(const deque<_Ty, _Alloc>& _Left, const deque<_Ty, _Al #if _HAS_CXX20 _EXPORT_STD template deque<_Ty, _Alloc>::size_type erase(deque<_Ty, _Alloc>& _Cont, const _Uty& _Val) { - return _Erase_remove(_Cont, _Val); + return _STD _Erase_remove(_Cont, _Val); } _EXPORT_STD template deque<_Ty, _Alloc>::size_type erase_if(deque<_Ty, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_remove_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_remove_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/execution b/stl/inc/execution index 11067c26068..68b22eed7ed 100644 --- a/stl/inc/execution +++ b/stl/inc/execution @@ -1756,8 +1756,8 @@ _NODISCARD _Iter_diff_t<_FwdIt> count(_ExPo&& _Exec, const _FwdIt _First, const } template >&& _Is_ranges_random_iter_v<_FwdIt2>, - bool = _Use_atomic_iterator<_Unwrapped_t>&& _Is_ranges_random_iter_v<_FwdIt1>> + bool = _Use_atomic_iterator<_Unwrapped_t> && _Is_ranges_random_iter_v<_FwdIt2>, + bool = _Use_atomic_iterator<_Unwrapped_t> && _Is_ranges_random_iter_v<_FwdIt1>> struct _Static_partitioned_mismatch_results; template @@ -2808,10 +2808,10 @@ inline size_t _Get_stable_sort_tree_height(const size_t _Count, const size_t _Hw // go to the next smaller power of 2 const auto _Count_max_tree_height = _Log_count_max_chunks & ~static_cast(1); - const auto _Ideal_chunks = _Hw_threads * _Oversubscription_multiplier; - const size_t _Log_ideal_chunks = _Floor_of_log_2(_Ideal_chunks); + const auto _Ideal_chunks = _Hw_threads * _Oversubscription_multiplier; + const size_t _Log_ideal_chunks = _Floor_of_log_2(_Ideal_chunks); #ifdef _WIN64 - constexpr size_t _Max_tree_height = 62; // to avoid ptrdiff_t overflow + constexpr size_t _Max_tree_height = 62; // to avoid ptrdiff_t overflow #else // ^^^ defined(_WIN64) / !defined(_WIN64) vvv constexpr size_t _Max_tree_height = 30; #endif // ^^^ !defined(_WIN64) ^^^ diff --git a/stl/inc/expected b/stl/inc/expected index 12b06882c2f..69bee016bb0 100644 --- a/stl/inc/expected +++ b/stl/inc/expected @@ -200,10 +200,10 @@ private: is_convertible&, _Ty>, // is_convertible&&, _Ty>, // is_convertible&, _Ty>, // - is_convertible&&, _Ty>>>> // - && !is_constructible_v, expected<_Uty, _UErr>&> // - && !is_constructible_v, expected<_Uty, _UErr>> // - && !is_constructible_v, const expected<_Uty, _UErr>&> // + is_convertible&&, _Ty>>>> + && !is_constructible_v, expected<_Uty, _UErr>&> + && !is_constructible_v, expected<_Uty, _UErr>> + && !is_constructible_v, const expected<_Uty, _UErr>&> && !is_constructible_v, const expected<_Uty, _UErr>>; public: @@ -220,7 +220,7 @@ public: : _Value(), _Has_value(true) {} constexpr expected(const expected& _Other) noexcept( - is_nothrow_copy_constructible_v<_Ty>&& is_nothrow_copy_constructible_v<_Err>) // strengthened + is_nothrow_copy_constructible_v<_Ty> && is_nothrow_copy_constructible_v<_Err>) // strengthened requires (!(is_trivially_copy_constructible_v<_Ty> && is_trivially_copy_constructible_v<_Err>) && is_copy_constructible_v<_Ty> && is_copy_constructible_v<_Err>) : _Has_value(_Other._Has_value) { @@ -237,7 +237,7 @@ public: // clang-format on constexpr expected(expected&& _Other) noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_constructible_v<_Err>) + is_nothrow_move_constructible_v<_Ty> && is_nothrow_move_constructible_v<_Err>) requires (!(is_trivially_move_constructible_v<_Ty> && is_trivially_move_constructible_v<_Err>) && is_move_constructible_v<_Ty> && is_move_constructible_v<_Err>) : _Has_value(_Other._Has_value) { @@ -256,9 +256,9 @@ public: template requires _Different_from, expected> && is_constructible_v<_Ty, const _Uty&> && is_constructible_v<_Err, const _UErr&> && _Allow_unwrapping<_Uty, _UErr> - constexpr explicit(!is_convertible_v || !is_convertible_v) - expected(const expected<_Uty, _UErr>& _Other) noexcept(is_nothrow_constructible_v<_Ty, const _Uty&> // - && is_nothrow_constructible_v<_Err, const _UErr&>) // strengthened + constexpr explicit(!is_convertible_v || !is_convertible_v) expected( + const expected<_Uty, _UErr>& _Other) noexcept(is_nothrow_constructible_v<_Ty, const _Uty&> + && is_nothrow_constructible_v<_Err, const _UErr&>) // strengthened : _Has_value(_Other._Has_value) { if (_Has_value) { _STD construct_at(_STD addressof(_Value), _Other._Value); @@ -272,7 +272,7 @@ public: && is_constructible_v<_Err, _UErr> && _Allow_unwrapping<_Uty, _UErr> constexpr explicit(!is_convertible_v<_Uty, _Ty> || !is_convertible_v<_UErr, _Err>) expected(expected<_Uty, _UErr>&& _Other) noexcept( - is_nothrow_constructible_v<_Ty, _Uty>&& is_nothrow_constructible_v<_Err, _UErr>) // strengthened + is_nothrow_constructible_v<_Ty, _Uty> && is_nothrow_constructible_v<_Err, _UErr>) // strengthened : _Has_value(_Other._Has_value) { if (_Has_value) { _STD construct_at(_STD addressof(_Value), _STD move(_Other._Value)); @@ -388,8 +388,8 @@ public: } constexpr expected& operator=(const expected& _Other) noexcept( - is_nothrow_copy_constructible_v<_Ty>&& is_nothrow_copy_constructible_v<_Err> // - && is_nothrow_copy_assignable_v<_Ty>&& is_nothrow_copy_assignable_v<_Err>) // strengthened + is_nothrow_copy_constructible_v<_Ty> && is_nothrow_copy_constructible_v<_Err> + && is_nothrow_copy_assignable_v<_Ty> && is_nothrow_copy_assignable_v<_Err>) // strengthened requires is_copy_assignable_v<_Ty> && is_copy_constructible_v<_Ty> // && is_copy_assignable_v<_Err> && is_copy_constructible_v<_Err> && (is_nothrow_move_constructible_v<_Ty> || is_nothrow_move_constructible_v<_Err>) @@ -409,8 +409,8 @@ public: } constexpr expected& operator=(expected&& _Other) noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_constructible_v<_Err> // - && is_nothrow_move_assignable_v<_Ty>&& is_nothrow_move_assignable_v<_Err>) + is_nothrow_move_constructible_v<_Ty> && is_nothrow_move_constructible_v<_Err> + && is_nothrow_move_assignable_v<_Ty> && is_nothrow_move_assignable_v<_Err>) requires is_move_assignable_v<_Ty> && is_move_constructible_v<_Ty> // && is_move_assignable_v<_Err> && is_move_constructible_v<_Err> && (is_nothrow_move_constructible_v<_Ty> || is_nothrow_move_constructible_v<_Err>) @@ -435,7 +435,7 @@ public: && (is_nothrow_constructible_v<_Ty, _Uty> || is_nothrow_move_constructible_v<_Ty> || is_nothrow_move_constructible_v<_Err>) ) constexpr expected& operator=(_Uty&& _Other) noexcept( - is_nothrow_constructible_v<_Ty, _Uty>&& is_nothrow_assignable_v<_Ty&, _Uty>) /* strengthened */ { + is_nothrow_constructible_v<_Ty, _Uty> && is_nothrow_assignable_v<_Ty&, _Uty>) /* strengthened */ { if (_Has_value) { _Value = _STD forward<_Uty>(_Other); } else { @@ -451,8 +451,8 @@ public: && (is_nothrow_constructible_v<_Err, const _UErr&> || is_nothrow_move_constructible_v<_Ty> || is_nothrow_move_constructible_v<_Err>) ) constexpr expected& operator=(const unexpected<_UErr>& _Other) noexcept( - is_nothrow_constructible_v<_Err, const _UErr&>&& - is_nothrow_assignable_v<_Err&, const _UErr&>) /* strengthened */ { + is_nothrow_constructible_v<_Err, const _UErr&> + && is_nothrow_assignable_v<_Err&, const _UErr&>) /* strengthened */ { if (_Has_value) { _Reinit_expected(_Unexpected, _Value, _Other._Unexpected); _Has_value = false; @@ -468,7 +468,7 @@ public: && (is_nothrow_constructible_v<_Err, _UErr> || is_nothrow_move_constructible_v<_Ty> || is_nothrow_move_constructible_v<_Err>) ) constexpr expected& operator=(unexpected<_UErr>&& _Other) noexcept( - is_nothrow_constructible_v<_Err, _UErr>&& is_nothrow_assignable_v<_Err&, _UErr>) /* strengthened */ { + is_nothrow_constructible_v<_Err, _UErr> && is_nothrow_assignable_v<_Err&, _UErr>) /* strengthened */ { if (_Has_value) { _Reinit_expected(_Unexpected, _Value, _STD move(_Other._Unexpected)); _Has_value = false; @@ -514,8 +514,9 @@ public: } // [expected.object.swap] - constexpr void swap(expected& _Other) noexcept(is_nothrow_move_constructible_v<_Ty>&& is_nothrow_swappable_v<_Ty>&& - is_nothrow_move_constructible_v<_Err>&& is_nothrow_swappable_v<_Err>) + constexpr void swap(expected& _Other) noexcept(is_nothrow_move_constructible_v<_Ty> && is_nothrow_swappable_v<_Ty> + && is_nothrow_move_constructible_v<_Err> + && is_nothrow_swappable_v<_Err>) requires is_swappable_v<_Ty> && is_swappable_v<_Err> // && is_move_constructible_v<_Ty> && is_move_constructible_v<_Err> && (is_nothrow_move_constructible_v<_Ty> || is_nothrow_move_constructible_v<_Err>) @@ -567,8 +568,9 @@ public: } } - friend constexpr void swap(expected& _Lhs, expected& _Rhs) noexcept(is_nothrow_move_constructible_v<_Ty>&& - is_nothrow_swappable_v<_Ty>&& is_nothrow_move_constructible_v<_Err>&& is_nothrow_swappable_v<_Err>) + friend constexpr void swap(expected& _Lhs, expected& _Rhs) noexcept( + is_nothrow_move_constructible_v<_Ty> && is_nothrow_swappable_v<_Ty> && is_nothrow_move_constructible_v<_Err> + && is_nothrow_swappable_v<_Err>) requires is_swappable_v<_Ty> && is_swappable_v<_Err> // && is_move_constructible_v<_Ty> && is_move_constructible_v<_Err> && (is_nothrow_move_constructible_v<_Ty> || is_nothrow_move_constructible_v<_Err>) @@ -690,7 +692,7 @@ public: template _NODISCARD constexpr _Ty value_or(_Uty&& _Other) const& noexcept( - is_nothrow_copy_constructible_v<_Ty>&& is_nothrow_convertible_v<_Uty, _Ty>) /* strengthened */ { + is_nothrow_copy_constructible_v<_Ty> && is_nothrow_convertible_v<_Uty, _Ty>) /* strengthened */ { static_assert( is_copy_constructible_v<_Ty>, "is_copy_constructible_v must be true. (N4950 [expected.object.obs]/18)"); static_assert( @@ -704,7 +706,7 @@ public: } template _NODISCARD constexpr _Ty value_or(_Uty&& _Other) && noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_convertible_v<_Uty, _Ty>) /* strengthened */ { + is_nothrow_move_constructible_v<_Ty> && is_nothrow_convertible_v<_Uty, _Ty>) /* strengthened */ { static_assert( is_move_constructible_v<_Ty>, "is_move_constructible_v must be true. (N4950 [expected.object.obs]/20)"); static_assert( @@ -719,7 +721,7 @@ public: template _NODISCARD constexpr _Err error_or(_Uty&& _Other) const& noexcept( - is_nothrow_copy_constructible_v<_Err>&& is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { + is_nothrow_copy_constructible_v<_Err> && is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { static_assert( is_copy_constructible_v<_Err>, "is_copy_constructible_v must be true. (N4950 [expected.object.obs]/22)"); static_assert( @@ -734,7 +736,7 @@ public: template _NODISCARD constexpr _Err error_or(_Uty&& _Other) && noexcept( - is_nothrow_move_constructible_v<_Err>&& is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { + is_nothrow_move_constructible_v<_Err> && is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { static_assert( is_move_constructible_v<_Err>, "is_move_constructible_v must be true. (N4950 [expected.object.obs]/24)"); static_assert( @@ -1275,7 +1277,7 @@ public: // [expected.void.assign] constexpr expected& operator=(const expected& _Other) noexcept( - is_nothrow_copy_constructible_v<_Err>&& is_nothrow_copy_assignable_v<_Err>) // strengthened + is_nothrow_copy_constructible_v<_Err> && is_nothrow_copy_assignable_v<_Err>) // strengthened requires is_copy_assignable_v<_Err> && is_copy_constructible_v<_Err> { if (_Has_value && _Other._Has_value) { @@ -1296,7 +1298,7 @@ public: } constexpr expected& operator=(expected&& _Other) noexcept( - is_nothrow_move_constructible_v<_Err>&& is_nothrow_move_assignable_v<_Err>) + is_nothrow_move_constructible_v<_Err> && is_nothrow_move_assignable_v<_Err>) requires is_move_assignable_v<_Err> && is_move_constructible_v<_Err> { if (_Has_value && _Other._Has_value) { @@ -1319,8 +1321,8 @@ public: template requires is_constructible_v<_Err, const _UErr&> && is_assignable_v<_Err&, const _UErr&> constexpr expected& operator=(const unexpected<_UErr>& _Other) noexcept( - is_nothrow_constructible_v<_Err, const _UErr&>&& - is_nothrow_assignable_v<_Err&, const _UErr&>) /* strengthened */ { + is_nothrow_constructible_v<_Err, const _UErr&> + && is_nothrow_assignable_v<_Err&, const _UErr&>) /* strengthened */ { if (_Has_value) { _STD construct_at(_STD addressof(_Unexpected), _Other._Unexpected); _Has_value = false; @@ -1334,7 +1336,7 @@ public: template requires is_constructible_v<_Err, _UErr> && is_assignable_v<_Err&, _UErr> constexpr expected& operator=(unexpected<_UErr>&& _Other) noexcept( - is_nothrow_constructible_v<_Err, _UErr>&& is_nothrow_assignable_v<_Err&, _UErr>) /* strengthened */ { + is_nothrow_constructible_v<_Err, _UErr> && is_nothrow_assignable_v<_Err&, _UErr>) /* strengthened */ { if (_Has_value) { _STD construct_at(_STD addressof(_Unexpected), _STD move(_Other._Unexpected)); _Has_value = false; @@ -1356,7 +1358,7 @@ public: // [expected.void.swap] constexpr void swap(expected& _Other) noexcept( - is_nothrow_move_constructible_v<_Err>&& is_nothrow_swappable_v<_Err>) // + is_nothrow_move_constructible_v<_Err> && is_nothrow_swappable_v<_Err>) requires is_swappable_v<_Err> && is_move_constructible_v<_Err> { using _STD swap; @@ -1382,7 +1384,7 @@ public: } friend constexpr void swap(expected& _Left, expected& _Right) noexcept( - is_nothrow_move_constructible_v<_Err>&& is_nothrow_swappable_v<_Err>) + is_nothrow_move_constructible_v<_Err> && is_nothrow_swappable_v<_Err>) requires is_swappable_v<_Err> && is_move_constructible_v<_Err> { _Left.swap(_Right); @@ -1444,7 +1446,7 @@ public: template _NODISCARD constexpr _Err error_or(_Uty&& _Other) const& noexcept( - is_nothrow_copy_constructible_v<_Err>&& is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { + is_nothrow_copy_constructible_v<_Err> && is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { static_assert( is_copy_constructible_v<_Err>, "is_copy_constructible_v must be true. (N4950 [expected.void.obs]/9)"); static_assert( @@ -1459,7 +1461,7 @@ public: template _NODISCARD constexpr _Err error_or(_Uty&& _Other) && noexcept( - is_nothrow_move_constructible_v<_Err>&& is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { + is_nothrow_move_constructible_v<_Err> && is_nothrow_convertible_v<_Uty, _Err>) /* strengthened */ { static_assert( is_move_constructible_v<_Err>, "is_move_constructible_v must be true. (N4950 [expected.void.obs]/11)"); static_assert( diff --git a/stl/inc/experimental/deque b/stl/inc/experimental/deque index 66586b75d27..0ac00fb20a0 100644 --- a/stl/inc/experimental/deque +++ b/stl/inc/experimental/deque @@ -23,12 +23,12 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(deque<_Ty, _Alloc>& _Cont, _Pr _Pred) { - _Erase_remove_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_remove_if(_Cont, _STD _Pass_fn(_Pred)); } template _DEPRECATE_EXPERIMENTAL_ERASE void erase(deque<_Ty, _Alloc>& _Cont, const _Uty& _Val) { - _Erase_remove(_Cont, _Val); + _STD _Erase_remove(_Cont, _Val); } } // namespace fundamentals_v2 diff --git a/stl/inc/experimental/forward_list b/stl/inc/experimental/forward_list index 3f84ea94fde..e9b2928121e 100644 --- a/stl/inc/experimental/forward_list +++ b/stl/inc/experimental/forward_list @@ -23,7 +23,7 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(forward_list<_Ty, _Alloc>& _Cont, _Pr _Pred) { - _Cont.remove_if(_Pass_fn(_Pred)); + _Cont.remove_if(_STD _Pass_fn(_Pred)); } template diff --git a/stl/inc/experimental/list b/stl/inc/experimental/list index c393302c5e8..3119b602f23 100644 --- a/stl/inc/experimental/list +++ b/stl/inc/experimental/list @@ -23,7 +23,7 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(list<_Ty, _Alloc>& _Cont, _Pr _Pred) { - _Cont.remove_if(_Pass_fn(_Pred)); + _Cont.remove_if(_STD _Pass_fn(_Pred)); } template diff --git a/stl/inc/experimental/map b/stl/inc/experimental/map index 6f6a3dc2418..a78b2762676 100644 --- a/stl/inc/experimental/map +++ b/stl/inc/experimental/map @@ -23,12 +23,12 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(map<_Kty, _Ty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(multimap<_Kty, _Ty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } } // namespace fundamentals_v2 diff --git a/stl/inc/experimental/set b/stl/inc/experimental/set index 8c8f64fc68b..000f68d17f7 100644 --- a/stl/inc/experimental/set +++ b/stl/inc/experimental/set @@ -23,12 +23,12 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(set<_Kty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(multiset<_Kty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } } // namespace fundamentals_v2 diff --git a/stl/inc/experimental/string b/stl/inc/experimental/string index 2ddde06c81a..2bd4e4f1422 100644 --- a/stl/inc/experimental/string +++ b/stl/inc/experimental/string @@ -23,12 +23,12 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(basic_string<_Elem, _Traits, _Alloc>& _Cont, _Pr _Pred) { - _Erase_remove_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_remove_if(_Cont, _STD _Pass_fn(_Pred)); } template _DEPRECATE_EXPERIMENTAL_ERASE void erase(basic_string<_Elem, _Traits, _Alloc>& _Cont, const _Uty& _Val) { - _Erase_remove(_Cont, _Val); + _STD _Erase_remove(_Cont, _Val); } } // namespace fundamentals_v2 diff --git a/stl/inc/experimental/unordered_map b/stl/inc/experimental/unordered_map index a1f6e748dc6..150495450e9 100644 --- a/stl/inc/experimental/unordered_map +++ b/stl/inc/experimental/unordered_map @@ -24,13 +24,13 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if( unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if( unordered_multimap<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } } // namespace fundamentals_v2 diff --git a/stl/inc/experimental/unordered_set b/stl/inc/experimental/unordered_set index 3d586ad9e8d..551a0a9c8f6 100644 --- a/stl/inc/experimental/unordered_set +++ b/stl/inc/experimental/unordered_set @@ -23,13 +23,13 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(unordered_set<_Kty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if( unordered_multiset<_Kty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } } // namespace fundamentals_v2 diff --git a/stl/inc/experimental/vector b/stl/inc/experimental/vector index 4a2af29b244..f95823a6f8e 100644 --- a/stl/inc/experimental/vector +++ b/stl/inc/experimental/vector @@ -23,12 +23,12 @@ namespace experimental { template _DEPRECATE_EXPERIMENTAL_ERASE void erase_if(vector<_Ty, _Alloc>& _Cont, _Pr _Pred) { - _Erase_remove_if(_Cont, _Pass_fn(_Pred)); + _STD _Erase_remove_if(_Cont, _STD _Pass_fn(_Pred)); } template _DEPRECATE_EXPERIMENTAL_ERASE void erase(vector<_Ty, _Alloc>& _Cont, const _Uty& _Val) { - _Erase_remove(_Cont, _Val); + _STD _Erase_remove(_Cont, _Val); } } // namespace fundamentals_v2 diff --git a/stl/inc/flat_set b/stl/inc/flat_set index f64c1674697..83f6e9d1f03 100644 --- a/stl/inc/flat_set +++ b/stl/inc/flat_set @@ -171,7 +171,7 @@ public: _Base_flat_set(const _Base_flat_set&) = default; _Base_flat_set(_Base_flat_set&& _Other) noexcept( - is_nothrow_move_constructible_v&& is_nothrow_copy_constructible_v) // strengthened + is_nothrow_move_constructible_v && is_nothrow_copy_constructible_v) // strengthened : _Mycont(_STD move(_Other).extract()), _Mycomp(_Other._Mycomp) // intentionally copy comparator, see LWG-2227 {} @@ -183,7 +183,7 @@ public: return *this; } _Base_flat_set& operator=(_Base_flat_set&& _Other) noexcept( - is_nothrow_move_assignable_v&& is_nothrow_copy_assignable_v) // strengthened + is_nothrow_move_assignable_v && is_nothrow_copy_assignable_v) // strengthened { if (this != _STD addressof(_Other)) { _Clear_guard _Guard{_STD addressof(_Mycont)}; diff --git a/stl/inc/format b/stl/inc/format index 700de646b1c..38e6d6c6b8d 100644 --- a/stl/inc/format +++ b/stl/inc/format @@ -43,6 +43,7 @@ _EMIT_STL_WARNING(STL4038, "The contents of are available only with C++ #else // ^^^ !defined(__cpp_lib_concepts) / defined(__cpp_lib_concepts) vvv #include <__msvc_format_ucd_tables.hpp> +#include <__msvc_formatter.hpp> #include <__msvc_print.hpp> #include #include @@ -67,15 +68,6 @@ _STL_DISABLE_CLANG_WARNINGS extern "C" _NODISCARD __std_win_error __stdcall __std_get_cvt(__std_code_page _Codepage, _Cvtvec* _Pcvt) noexcept; _STD_BEGIN - -#if _HAS_CXX23 -#define _FMT_P2286_BEGIN inline namespace __p2286 { -#define _FMT_P2286_END } -#else // ^^^ C++23 / C++20 vvv -#define _FMT_P2286_BEGIN -#define _FMT_P2286_END -#endif // ^^^ C++20 ^^^ - template _NODISCARD constexpr const _CharT* _Choose_literal(const char* const _Str, const wchar_t* const _WStr) noexcept { if constexpr (is_same_v<_CharT, char>) { @@ -100,28 +92,6 @@ _EXPORT_STD class format_error : public runtime_error { _THROW(format_error{_Message}); } -enum class _Fmt_align : uint8_t { _None, _Left, _Right, _Center }; - -enum class _Fmt_sign : uint8_t { _None, _Plus, _Minus, _Space }; - -enum class _Basic_format_arg_type : uint8_t { - _None, - _Int_type, - _UInt_type, - _Long_long_type, - _ULong_long_type, - _Bool_type, - _Char_type, - _Float_type, - _Double_type, - _Long_double_type, - _Pointer_type, - _CString_type, - _String_type, - _Custom_type, -}; -static_assert(static_cast(_Basic_format_arg_type::_Custom_type) < 16, "must fit in 4-bit bitfield"); - _NODISCARD constexpr bool _Is_integral_fmt_type(_Basic_format_arg_type _Ty) { return _Ty > _Basic_format_arg_type::_None && _Ty <= _Basic_format_arg_type::_Char_type; } @@ -130,13 +100,6 @@ _NODISCARD constexpr bool _Is_arithmetic_fmt_type(_Basic_format_arg_type _Ty) { return _Ty > _Basic_format_arg_type::_None && _Ty <= _Basic_format_arg_type::_Long_double_type; } -#if _HAS_CXX23 -_NODISCARD consteval bool _Is_debug_enabled_fmt_type(_Basic_format_arg_type _Ty) { - return _Ty == _Basic_format_arg_type::_Char_type || _Ty == _Basic_format_arg_type::_CString_type - || _Ty == _Basic_format_arg_type::_String_type; -} -#endif // _HAS_CXX23 - struct _Auto_id_tag { explicit _Auto_id_tag() = default; }; @@ -364,7 +327,9 @@ public: constexpr _Unicode_codepoint_iterator(const _CharT* _First_val, const _CharT* _Last_val) noexcept : _First(_First_val), _Last(_Last_val) { - _Next = _Decode_utf(_First, _Last, _Val)._Next_ptr; + if (_First != _Last) { + _Next = _Decode_utf(_First, _Last, _Val)._Next_ptr; + } } constexpr _Unicode_codepoint_iterator() = default; @@ -571,12 +536,6 @@ public: template concept _CharT_or_bool = same_as<_Ty, _CharT> || same_as<_Ty, bool>; -template -concept _Format_supported_charT = _Is_any_of_v<_CharT, char, wchar_t>; - -_EXPORT_STD template -struct formatter; - inline void _You_see_this_error_because_arg_id_is_out_of_range() noexcept {} inline void _Invalid_arg_type_for_dynamic_width_or_precision() noexcept {} @@ -710,7 +669,7 @@ struct _Format_arg_traits { // Function template _Type_eraser mirrors the type dispatching mechanism in the construction of basic_format_arg // (N4950 [format.arg]). They determine the mapping from "raw" to "erased" argument type for _Format_arg_store. - template <_Formattable_with<_Context> _Ty> + template static auto _Type_eraser(); template @@ -877,7 +836,7 @@ private: }; template -template <_Formattable_with<_Context> _Ty> +template auto _Format_arg_traits<_Context>::_Type_eraser() { using _Td = remove_const_t<_Ty>; // See N4950 [format.arg]/6 @@ -1593,30 +1552,6 @@ constexpr void _Parse_format_string(basic_string_view<_CharT> _Format_str, _Hand } } -template -struct _Basic_format_specs { - int _Width = 0; - int _Precision = -1; - char _Type = '\0'; - _Fmt_align _Alignment = _Fmt_align::_None; - _Fmt_sign _Sgn = _Fmt_sign::_None; - bool _Alt = false; - bool _Localized = false; - bool _Leading_zero = false; - uint8_t _Fill_length = 1; - // At most one codepoint (so one char32_t or four utf-8 char8_t). - _CharT _Fill[4 / sizeof(_CharT)] = {_CharT{' '}}; -}; - -// Adds width and precision references to _Basic_format_specs. -// This is required for std::formatter implementations because we must -// parse the format specs without having access to the format args (via a format context). -template -struct _Dynamic_format_specs : _Basic_format_specs<_CharT> { - int _Dynamic_width_index = -1; - int _Dynamic_precision_index = -1; -}; - // Model of _Parse_spec_callbacks that fills a _Basic_format_specs with the parsed data. template class _Specs_setter { @@ -2281,14 +2216,9 @@ public: #if _HAS_CXX23 template struct _Phony_fmt_iter_for { - using iterator_category = output_iterator_tag; - using value_type = _CharT; - using difference_type = ptrdiff_t; - using pointer = _CharT*; - using reference = _CharT&; + using difference_type = ptrdiff_t; - reference operator*() const; - pointer operator->() const; + _CharT& operator*() const; _Phony_fmt_iter_for& operator++(); _Phony_fmt_iter_for operator++(int); @@ -2508,7 +2438,7 @@ struct _Invalid_format_kind { }; _EXPORT_STD template -constexpr _Invalid_format_kind<_Ty> format_kind{}; +inline constexpr _Invalid_format_kind<_Ty> format_kind; template inline constexpr bool _Is_two_tuple = false; @@ -2521,7 +2451,7 @@ inline constexpr bool _Is_two_tuple> = true; template <_RANGES input_range _Rng> requires same_as<_Rng, remove_cvref_t<_Rng>> -constexpr range_format format_kind<_Rng> = []() consteval { +inline constexpr range_format format_kind<_Rng> = []() consteval { using _Ref_value_t = remove_cvref_t<_RANGES range_reference_t<_Rng>>; if constexpr (same_as<_Ref_value_t, _Rng>) { return range_format::disabled; @@ -3692,159 +3622,38 @@ struct _Format_handler { return _First; } }; -_FMT_P2286_END - -// Generic formatter definition, the deleted default constructor -// makes it "disabled" as per N4950 [format.formatter.spec]/5 -_EXPORT_STD template -struct formatter { - formatter() = delete; - formatter(const formatter&) = delete; - formatter operator=(const formatter&) = delete; -}; - -_FMT_P2286_BEGIN -template -struct _Formatter_base { -private: - using _Pc = basic_format_parse_context<_CharT>; -public: -#if _HAS_CXX23 - constexpr void _Set_debug_format() noexcept - requires (_Is_debug_enabled_fmt_type(_ArgType)) - { - _Specs._Type = '?'; +template <_Basic_format_arg_type _ArgType, class _CharT, class _Pc> +constexpr _Pc::iterator _Formatter_base_parse(_Dynamic_format_specs<_CharT>& _Specs, _Pc& _ParseCtx) { + _Specs_checker<_Dynamic_specs_handler<_Pc>> _Handler(_Dynamic_specs_handler<_Pc>{_Specs, _ParseCtx}, _ArgType); + const auto _It = _Parse_format_specs(_ParseCtx._Unchecked_begin(), _ParseCtx._Unchecked_end(), _Handler); + if (_It != _ParseCtx._Unchecked_end() && *_It != '}') { + _Throw_format_error("Missing '}' in format string."); } -#endif // _HAS_CXX23 + return _ParseCtx.begin() + (_It - _ParseCtx._Unchecked_begin()); +} - constexpr _Pc::iterator parse(_Pc& _ParseCtx) { - _Specs_checker<_Dynamic_specs_handler<_Pc>> _Handler(_Dynamic_specs_handler<_Pc>{_Specs, _ParseCtx}, _ArgType); - const auto _It = _Parse_format_specs(_ParseCtx._Unchecked_begin(), _ParseCtx._Unchecked_end(), _Handler); - if (_It != _ParseCtx._Unchecked_end() && *_It != '}') { - _Throw_format_error("Missing '}' in format string."); - } - return _ParseCtx.begin() + (_It - _ParseCtx._Unchecked_begin()); +template +_FormatContext::iterator _Formatter_base_format( + const _Dynamic_format_specs<_CharT>& _Specs, const _Ty& _Val, _FormatContext& _FormatCtx) { + _Dynamic_format_specs<_CharT> _Format_specs = _Specs; + if (_Specs._Dynamic_width_index >= 0) { + _Format_specs._Width = + _Get_dynamic_specs<_Width_checker>(_FormatCtx.arg(static_cast(_Specs._Dynamic_width_index))); } - template - _FormatContext::iterator format(const _Ty& _Val, _FormatContext& _FormatCtx) const { - _Dynamic_format_specs<_CharT> _Format_specs = _Specs; - if (_Specs._Dynamic_width_index >= 0) { - _Format_specs._Width = - _Get_dynamic_specs<_Width_checker>(_FormatCtx.arg(static_cast(_Specs._Dynamic_width_index))); - } - - if (_Specs._Dynamic_precision_index >= 0) { - _Format_specs._Precision = _Get_dynamic_specs<_Precision_checker>( - _FormatCtx.arg(static_cast(_Specs._Dynamic_precision_index))); - } - - return _STD visit_format_arg( - _Arg_formatter{ - ._Ctx = _STD addressof(_FormatCtx), ._Specs = _STD addressof(_Format_specs)}, - basic_format_arg<_FormatContext>::_Make_from(_Val)); + if (_Specs._Dynamic_precision_index >= 0) { + _Format_specs._Precision = _Get_dynamic_specs<_Precision_checker>( + _FormatCtx.arg(static_cast(_Specs._Dynamic_precision_index))); } -private: - _Dynamic_format_specs<_CharT> _Specs; -}; + return _STD visit_format_arg( + _Arg_formatter{ + ._Ctx = _STD addressof(_FormatCtx), ._Specs = _STD addressof(_Format_specs)}, + basic_format_arg<_FormatContext>::_Make_from(_Val)); +} _FMT_P2286_END -#define _FORMAT_SPECIALIZE_FOR(_Type, _ArgType) \ - template <_Format_supported_charT _CharT> \ - struct formatter<_Type, _CharT> : _Formatter_base<_Type, _CharT, _ArgType> {} - -_FORMAT_SPECIALIZE_FOR(int, _Basic_format_arg_type::_Int_type); -_FORMAT_SPECIALIZE_FOR(unsigned int, _Basic_format_arg_type::_UInt_type); -_FORMAT_SPECIALIZE_FOR(long long, _Basic_format_arg_type::_Long_long_type); -_FORMAT_SPECIALIZE_FOR(unsigned long long, _Basic_format_arg_type::_ULong_long_type); -_FORMAT_SPECIALIZE_FOR(bool, _Basic_format_arg_type::_Bool_type); -_FORMAT_SPECIALIZE_FOR(float, _Basic_format_arg_type::_Float_type); -_FORMAT_SPECIALIZE_FOR(double, _Basic_format_arg_type::_Double_type); -_FORMAT_SPECIALIZE_FOR(long double, _Basic_format_arg_type::_Long_double_type); -_FORMAT_SPECIALIZE_FOR(nullptr_t, _Basic_format_arg_type::_Pointer_type); -_FORMAT_SPECIALIZE_FOR(void*, _Basic_format_arg_type::_Pointer_type); -_FORMAT_SPECIALIZE_FOR(const void*, _Basic_format_arg_type::_Pointer_type); -_FORMAT_SPECIALIZE_FOR(short, _Basic_format_arg_type::_Int_type); -_FORMAT_SPECIALIZE_FOR(unsigned short, _Basic_format_arg_type::_UInt_type); -_FORMAT_SPECIALIZE_FOR(long, _Basic_format_arg_type::_Int_type); -_FORMAT_SPECIALIZE_FOR(unsigned long, _Basic_format_arg_type::_UInt_type); -_FORMAT_SPECIALIZE_FOR(signed char, _Basic_format_arg_type::_Int_type); -_FORMAT_SPECIALIZE_FOR(unsigned char, _Basic_format_arg_type::_UInt_type); - -#undef _FORMAT_SPECIALIZE_FOR - -// not using the macro because we'd like to add 'set_debug_format' member function in C++23 mode -template <_Format_supported_charT _CharT> -struct formatter : _Formatter_base { -#if _HAS_CXX23 - constexpr void set_debug_format() noexcept { - this->_Set_debug_format(); - } -#endif // _HAS_CXX23 -}; - -// not using the macro because we'd like to avoid the formatter specialization -template <> -struct formatter : _Formatter_base { -#if _HAS_CXX23 - constexpr void set_debug_format() noexcept { - _Set_debug_format(); - } -#endif // _HAS_CXX23 -}; - -// We could use the macro for these specializations, but it's confusing to refer to symbols that are defined -// inside the macro in the macro's "call". -template <_Format_supported_charT _CharT> -struct formatter<_CharT*, _CharT> : _Formatter_base<_CharT*, _CharT, _Basic_format_arg_type::_CString_type> { -#if _HAS_CXX23 - constexpr void set_debug_format() noexcept { - this->_Set_debug_format(); - } -#endif // _HAS_CXX23 -}; - -template <_Format_supported_charT _CharT> -struct formatter - : _Formatter_base { -#if _HAS_CXX23 - constexpr void set_debug_format() noexcept { - this->_Set_debug_format(); - } -#endif // _HAS_CXX23 -}; - -template <_Format_supported_charT _CharT, size_t _Nx> -struct formatter<_CharT[_Nx], _CharT> : _Formatter_base<_CharT[_Nx], _CharT, _Basic_format_arg_type::_CString_type> { -#if _HAS_CXX23 - constexpr void set_debug_format() noexcept { - this->_Set_debug_format(); - } -#endif // _HAS_CXX23 -}; - -template <_Format_supported_charT _CharT, class _Traits, class _Allocator> -struct formatter, _CharT> - : _Formatter_base, _CharT, _Basic_format_arg_type::_String_type> { -#if _HAS_CXX23 - constexpr void set_debug_format() noexcept { - this->_Set_debug_format(); - } -#endif // _HAS_CXX23 -}; - -template <_Format_supported_charT _CharT, class _Traits> -struct formatter, _CharT> - : _Formatter_base, _CharT, _Basic_format_arg_type::_String_type> { -#if _HAS_CXX23 - constexpr void set_debug_format() noexcept { - this->_Set_debug_format(); - } -#endif // _HAS_CXX23 -}; - _EXPORT_STD template struct basic_format_string { public: @@ -4225,7 +4034,7 @@ _NODISCARD constexpr const _CharT* _Parse_fill_align_and_width_specs( template struct _Fill_align_and_width_formatter { public: - _NODISCARD constexpr auto parse(basic_format_parse_context<_CharT>& _Parse_ctx) { + _NODISCARD constexpr auto _Parse(basic_format_parse_context<_CharT>& _Parse_ctx) { _Fill_align_and_width_specs_setter<_CharT> _Callback{_Specs, _Parse_ctx}; const auto _It = _Parse_fill_align_and_width_specs(_Parse_ctx._Unchecked_begin(), _Parse_ctx._Unchecked_end(), _Callback); @@ -4252,10 +4061,6 @@ private: _Fill_align_and_width_specs<_CharT> _Specs; }; #endif // _HAS_CXX23 - -#undef _FMT_P2286_END -#undef _FMT_P2286_BEGIN - _STD_END #pragma pop_macro("new") diff --git a/stl/inc/forward_list b/stl/inc/forward_list index d76f67fbee7..7a5da3e152e 100644 --- a/stl/inc/forward_list +++ b/stl/inc/forward_list @@ -561,6 +561,9 @@ public: _Insert_op._Attach_after(_Mypair._Myval2._Before_head()); } +#if _HAS_CXX17 + template ::value, int> = 0> +#endif // _HAS_CXX17 forward_list(_CRT_GUARDOVERFLOW size_type _Count, const _Ty& _Val, const _Alloc& _Al) : _Mypair(_One_then_variadic_args_t{}, _Al) { // construct list from _Count * _Val, allocator _Flist_insert_after_op2<_Alnode> _Insert_op(_Getal()); @@ -1619,7 +1622,7 @@ forward_list<_Ty, _Alloc>::size_type erase(forward_list<_Ty, _Alloc>& _Cont, con _EXPORT_STD template forward_list<_Ty, _Alloc>::size_type erase_if(forward_list<_Ty, _Alloc>& _Cont, _Pr _Pred) { - return _Cont.remove_if(_Pass_fn(_Pred)); + return _Cont.remove_if(_STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/header-units.json b/stl/inc/header-units.json index 2aceb168322..325f830e5fe 100644 --- a/stl/inc/header-units.json +++ b/stl/inc/header-units.json @@ -10,6 +10,7 @@ "__msvc_cxx_stdatomic.hpp", "__msvc_filebuf.hpp", "__msvc_format_ucd_tables.hpp", + "__msvc_formatter.hpp", "__msvc_int128.hpp", "__msvc_iter_core.hpp", "__msvc_print.hpp", diff --git a/stl/inc/iterator b/stl/inc/iterator index 9d68590f032..47c3531806d 100644 --- a/stl/inc/iterator +++ b/stl/inc/iterator @@ -575,13 +575,11 @@ public: is_nothrow_constructible_v<_Ty2, _Types...>) : _Second(_STD forward<_Types>(_Args)...), _Contains{_Variantish_state::_Holds_second} {} - // clang-format off template requires _Different_from<_Variantish<_Uty1, _Uty2>, _Variantish> constexpr _Variantish(const _Variantish<_Uty1, _Uty2>& _That) noexcept( is_nothrow_constructible_v<_Ty1, const _Uty1&> && is_nothrow_constructible_v<_Ty2, const _Uty2&>) : _Contains{_That._Contains} { - // clang-format on switch (_That._Contains) { case _Variantish_state::_Holds_first: _STD _Construct_in_place(_First, _That._Get_first()); @@ -600,7 +598,7 @@ public: // clang-format on constexpr _Variantish(const _Variantish& _That) noexcept( - is_nothrow_copy_constructible_v<_Ty1>&& is_nothrow_copy_constructible_v<_Ty2>) + is_nothrow_copy_constructible_v<_Ty1> && is_nothrow_copy_constructible_v<_Ty2>) : _Contains{_That._Contains} { switch (_Contains) { case _Variantish_state::_Holds_first: @@ -620,7 +618,7 @@ public: // clang-format on constexpr _Variantish(_Variantish&& _That) noexcept( - is_nothrow_move_constructible_v<_Ty1>&& is_nothrow_move_constructible_v<_Ty2>) + is_nothrow_move_constructible_v<_Ty1> && is_nothrow_move_constructible_v<_Ty2>) : _Contains{_That._Contains} { switch (_Contains) { case _Variantish_state::_Holds_first: @@ -650,8 +648,8 @@ public: // clang-format on constexpr _Variantish& operator=(const _Variantish& _That) noexcept( - is_nothrow_copy_constructible_v<_Ty1>&& is_nothrow_copy_constructible_v<_Ty2>&& - is_nothrow_copy_assignable_v<_Ty1>&& is_nothrow_copy_assignable_v<_Ty2>) { + is_nothrow_copy_constructible_v<_Ty1> && is_nothrow_copy_constructible_v<_Ty2> + && is_nothrow_copy_assignable_v<_Ty1> && is_nothrow_copy_assignable_v<_Ty2>) { if (_Contains == _That._Contains) { switch (_Contains) { case _Variantish_state::_Holds_first: @@ -695,8 +693,8 @@ public: // clang-format on constexpr _Variantish& operator=(_Variantish&& _That) noexcept( - is_nothrow_move_constructible_v<_Ty1>&& is_nothrow_move_constructible_v<_Ty2>&& - is_nothrow_move_assignable_v<_Ty1>&& is_nothrow_move_assignable_v<_Ty2>) { + is_nothrow_move_constructible_v<_Ty1> && is_nothrow_move_constructible_v<_Ty2> + && is_nothrow_move_assignable_v<_Ty1> && is_nothrow_move_assignable_v<_Ty2>) { if (_Contains == _That._Contains) { switch (_Contains) { case _Variantish_state::_Holds_first: @@ -730,13 +728,11 @@ public: return *this; } - // clang-format off template requires _Different_from<_Variantish<_Uty1, _Uty2>, _Variantish> constexpr _Variantish& operator=(const _Variantish<_Uty1, _Uty2>& _That) noexcept( is_nothrow_constructible_v<_Ty1, const _Uty1&> && is_nothrow_constructible_v<_Ty2, const _Uty2&> - && is_nothrow_assignable_v<_Ty1&, const _Uty1&> && is_nothrow_assignable_v<_Ty2&, const _Uty2&>) { - // clang-format on + && is_nothrow_assignable_v<_Ty1&, const _Uty1&> && is_nothrow_assignable_v<_Ty2&, const _Uty2&>) { if (_Contains == _That._Contains) { switch (_Contains) { case _Variantish_state::_Holds_first: @@ -888,18 +884,17 @@ public: template requires convertible_to && convertible_to constexpr common_iterator(const common_iterator<_OIter, _OSe>& _Right) noexcept( - is_nothrow_constructible_v<_Iter, const _OIter&>&& is_nothrow_constructible_v<_Se, const _OSe&>) // strengthened + is_nothrow_constructible_v<_Iter, const _OIter&> + && is_nothrow_constructible_v<_Se, const _OSe&>) // strengthened : _Val{_Right._Get_val()} {} - // clang-format off template requires convertible_to && convertible_to - && assignable_from<_Iter&, const _OIter&> && assignable_from<_Se&, const _OSe&> + && assignable_from<_Iter&, const _OIter&> && assignable_from<_Se&, const _OSe&> constexpr common_iterator& operator=(const common_iterator<_OIter, _OSe>& _Right) noexcept( is_nothrow_constructible_v<_Iter, const _OIter&> && is_nothrow_constructible_v<_Se, const _OSe&> - && is_nothrow_assignable_v<_Iter&, const _OIter&> - && is_nothrow_assignable_v<_Se&, const _OSe&>) /* strengthened */ { - // clang-format on + && is_nothrow_assignable_v<_Iter&, const _OIter&> + && is_nothrow_assignable_v<_Se&, const _OSe&>) /* strengthened */ { _Val = _Right._Get_val(); return *this; } diff --git a/stl/inc/list b/stl/inc/list index 843459d4492..30a30caedfa 100644 --- a/stl/inc/list +++ b/stl/inc/list @@ -845,6 +845,9 @@ public: _Construct_n(_Count, _Val); } +#if _HAS_CXX17 + template ::value, int> = 0> +#endif // _HAS_CXX17 list(_CRT_GUARDOVERFLOW size_type _Count, const _Ty& _Val, const _Alloc& _Al) : _Mypair(_One_then_variadic_args_t{}, _Al) { // construct list from _Count * _Val, allocator _Construct_n(_Count, _Val); @@ -1722,12 +1725,12 @@ public: template void merge(list& _Right, _Pr2 _Pred) { // merge in elements from _Right, both ordered by _Pred - _Merge1(_Right, _Pass_fn(_Pred)); + _Merge1(_Right, _STD _Pass_fn(_Pred)); } template void merge(list&& _Right, _Pr2 _Pred) { // merge in elements from _Right, both ordered by _Pred - _Merge1(_Right, _Pass_fn(_Pred)); + _Merge1(_Right, _STD _Pass_fn(_Pred)); } private: @@ -1773,7 +1776,7 @@ public: template void sort(_Pr2 _Pred) { // order sequence auto& _My_data = _Mypair._Myval2; - _Scary_val::_Sort(_My_data._Myhead->_Next, _My_data._Mysize, _Pass_fn(_Pred)); + _Scary_val::_Sort(_My_data._Myhead->_Next, _My_data._Mysize, _STD _Pass_fn(_Pred)); } void reverse() noexcept { // reverse sequence @@ -1921,7 +1924,7 @@ list<_Ty, _Alloc>::size_type erase(list<_Ty, _Alloc>& _Cont, const _Uty& _Val) { _EXPORT_STD template list<_Ty, _Alloc>::size_type erase_if(list<_Ty, _Alloc>& _Cont, _Pr _Pred) { - return _Cont.remove_if(_Pass_fn(_Pred)); + return _Cont.remove_if(_STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/map b/stl/inc/map index d57a2535088..c8739b9013e 100644 --- a/stl/inc/map +++ b/stl/inc/map @@ -166,7 +166,7 @@ public: map(map&& _Right, const allocator_type& _Al) : _Mybase(_STD move(_Right), _Al) {} - map& operator=(map&& _Right) noexcept(_Alnode_traits::is_always_equal::value&& is_nothrow_move_assignable_v<_Pr>) { + map& operator=(map&& _Right) noexcept(_Alnode_traits::is_always_equal::value && is_nothrow_move_assignable_v<_Pr>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -448,7 +448,7 @@ void swap(map<_Kty, _Ty, _Pr, _Alloc>& _Left, map<_Kty, _Ty, _Pr, _Alloc>& _Righ #if _HAS_CXX20 _EXPORT_STD template map<_Kty, _Ty, _Keylt, _Alloc>::size_type erase_if(map<_Kty, _Ty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 @@ -547,7 +547,7 @@ public: multimap(multimap&& _Right, const allocator_type& _Al) : _Mybase(_STD move(_Right), _Al) {} multimap& operator=(multimap&& _Right) noexcept( - _Alnode_traits::is_always_equal::value&& is_nothrow_move_assignable_v<_Pr>) { + _Alnode_traits::is_always_equal::value && is_nothrow_move_assignable_v<_Pr>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -687,7 +687,7 @@ void swap(multimap<_Kty, _Ty, _Pr, _Alloc>& _Left, multimap<_Kty, _Ty, _Pr, _All #if _HAS_CXX20 _EXPORT_STD template multimap<_Kty, _Ty, _Keylt, _Alloc>::size_type erase_if(multimap<_Kty, _Ty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/mdspan b/stl/inc/mdspan index a603de5f0b2..22e8e6e7501 100644 --- a/stl/inc/mdspan +++ b/stl/inc/mdspan @@ -538,7 +538,7 @@ public: if constexpr (extents_type::rank() > 0) { index_type _Prod = 1; for (size_t _Idx = 0; _Idx < extents_type::_Rank; ++_Idx) { - _STL_VERIFY(_Other.stride(_Idx) == _Prod, + _STL_VERIFY(_STD cmp_equal(_Other.stride(_Idx), _Prod), "For all r in the range [0, extents_type::rank()), other.stride(r) must be equal to " "extents().fwd-prod-of-extents(r) (N4950 [mdspan.layout.left.cons]/10.1)."); _Prod = static_cast(_Prod * this->_Exts.extent(_Idx)); @@ -690,7 +690,7 @@ public: if constexpr (extents_type::rank() > 0) { index_type _Prod = 1; for (size_t _Idx = extents_type::_Rank; _Idx-- > 0;) { - _STL_VERIFY(_Prod == _Other.stride(_Idx), + _STL_VERIFY(_STD cmp_equal(_Prod, _Other.stride(_Idx)), "For all r in the range [0, extents_type::rank()), other.stride(r) must be equal to " "extents().rev-prod-of-extents(r) (N4950 [mdspan.layout.right.cons]/10.1)."); _Prod = static_cast(_Prod * this->_Exts.extent(_Idx)); @@ -1075,6 +1075,8 @@ struct _Mdspan_mapping_base { constexpr explicit _Mdspan_mapping_base(const _Extents& _Exts) : _Map(_Exts) {} + constexpr explicit _Mdspan_mapping_base(_Extents&& _Exts) : _Map(_STD move(_Exts)) {} + template constexpr explicit _Mdspan_mapping_base(const _OtherMapping& _Map_) : _Map(_Map_) {} @@ -1091,6 +1093,8 @@ struct _Mdspan_mapping_base<_Extents, _LayoutPolicy> { constexpr explicit _Mdspan_mapping_base(const _Extents&) noexcept {} + constexpr explicit _Mdspan_mapping_base(_Extents&&) noexcept {} + template constexpr explicit _Mdspan_mapping_base(const _OtherMapping& _Map_) { // NB: Constructing _Mapping from _OtherMapping may have side effects - we should create a temporary. @@ -1131,6 +1135,22 @@ struct _Mdspan_accessor_base<_AccessorPolicy> { static constexpr _AccessorPolicy _Acc{}; }; +#if _CONTAINER_DEBUG_LEVEL > 0 +template +_NODISCARD constexpr _IndexType _Mdspan_checked_index_cast(_OtherIndexType&& _Idx) noexcept( + is_nothrow_constructible_v<_IndexType, _OtherIndexType>) { + _STL_INTERNAL_STATIC_ASSERT(is_integral_v<_IndexType> && is_constructible_v<_IndexType, _OtherIndexType>); + + using _Arg_value_t = remove_cvref_t<_OtherIndexType>; + if constexpr (is_integral_v<_Arg_value_t> && !is_same_v<_Arg_value_t, bool>) { + _STL_VERIFY(_STD in_range<_IndexType>(_Idx), + "Each argument to operator[] must be representable by index_type in order for the pack of arguments to be " + "a valid multidimensional index (N4964 [mdspan.mdspan.members]/3)."); + } + return static_cast<_IndexType>(_STD forward<_OtherIndexType>(_Idx)); +} +#endif // _CONTAINER_DEBUG_LEVEL > 0 + _EXPORT_STD template > class __declspec(empty_bases) mdspan : private _Mdspan_mapping_base<_Extents, _LayoutPolicy>, @@ -1184,9 +1204,9 @@ public: return this->_Map.extents().extent(_Idx); } - constexpr mdspan() noexcept( - is_nothrow_default_constructible_v&& is_nothrow_default_constructible_v&& - is_nothrow_default_constructible_v) // strengthened + constexpr mdspan() noexcept(is_nothrow_default_constructible_v + && is_nothrow_default_constructible_v + && is_nothrow_default_constructible_v) // strengthened requires (rank_dynamic() > 0) && is_default_constructible_v && is_default_constructible_v && is_default_constructible_v {} @@ -1200,8 +1220,8 @@ public: && (sizeof...(_OtherIndexTypes) == rank() || sizeof...(_OtherIndexTypes) == rank_dynamic()) && is_constructible_v && is_default_constructible_v constexpr explicit mdspan(data_handle_type _Ptr_, _OtherIndexTypes... _Exts) noexcept( - is_nothrow_constructible_v&& - is_nothrow_default_constructible_v) // strengthened + is_nothrow_constructible_v + && is_nothrow_default_constructible_v) // strengthened : _Mapping_base(extents_type{static_cast(_STD move(_Exts))...}), _Accessor_base(), _Ptr(_STD move(_Ptr_)) {} @@ -1210,9 +1230,10 @@ public: && is_nothrow_constructible_v && (_Size == rank() || _Size == rank_dynamic()) && is_constructible_v && is_default_constructible_v - constexpr explicit(_Size != rank_dynamic()) mdspan(data_handle_type _Ptr_, - span<_OtherIndexType, _Size> _Exts) noexcept(is_nothrow_constructible_v&& - is_nothrow_default_constructible_v) // strengthened + constexpr explicit(_Size != rank_dynamic()) + mdspan(data_handle_type _Ptr_, span<_OtherIndexType, _Size> _Exts) noexcept( + is_nothrow_constructible_v + && is_nothrow_default_constructible_v) // strengthened : _Mapping_base(extents_type{_Exts}), _Accessor_base(), _Ptr(_STD move(_Ptr_)) {} template @@ -1220,25 +1241,26 @@ public: && is_nothrow_constructible_v && (_Size == rank() || _Size == rank_dynamic()) && is_constructible_v && is_default_constructible_v - constexpr explicit(_Size != rank_dynamic()) mdspan(data_handle_type _Ptr_, - const array<_OtherIndexType, _Size>& _Exts) noexcept(is_nothrow_constructible_v&& - is_nothrow_default_constructible_v) // strengthened + constexpr explicit(_Size != rank_dynamic()) + mdspan(data_handle_type _Ptr_, const array<_OtherIndexType, _Size>& _Exts) noexcept( + is_nothrow_constructible_v + && is_nothrow_default_constructible_v) // strengthened : _Mapping_base(extents_type{_Exts}), _Accessor_base(), _Ptr(_STD move(_Ptr_)) {} constexpr mdspan(data_handle_type _Ptr_, const extents_type& _Exts) noexcept( - is_nothrow_constructible_v&& is_nothrow_default_constructible_v) // strengthened + is_nothrow_constructible_v + && is_nothrow_default_constructible_v) // strengthened requires is_constructible_v && is_default_constructible_v : _Mapping_base(_Exts), _Accessor_base(), _Ptr(_STD move(_Ptr_)) {} constexpr mdspan(data_handle_type _Ptr_, const mapping_type& _Map_) noexcept( - is_nothrow_copy_constructible_v&& - is_nothrow_default_constructible_v) // strengthened + is_nothrow_copy_constructible_v + && is_nothrow_default_constructible_v) // strengthened requires is_default_constructible_v : _Mapping_base(_Map_), _Accessor_base(), _Ptr(_STD move(_Ptr_)) {} constexpr mdspan(data_handle_type _Ptr_, const mapping_type& _Map_, const accessor_type& _Acc_) noexcept( - is_nothrow_copy_constructible_v&& is_nothrow_copy_constructible_v) // strengthened + is_nothrow_copy_constructible_v && is_nothrow_copy_constructible_v) // strengthened : _Mapping_base(_Map_), _Accessor_base(_Acc_), _Ptr(_STD move(_Ptr_)) {} template @@ -1248,10 +1270,10 @@ public: !is_convertible_v&, mapping_type> || !is_convertible_v) mdspan(const mdspan<_OtherElementType, _OtherExtents, _OtherLayoutPolicy, _OtherAccessor>& _Other) noexcept( - is_nothrow_constructible_v&& - is_nothrow_constructible_v&>&& - is_nothrow_constructible_v) // strengthened + is_nothrow_constructible_v + && is_nothrow_constructible_v&> + && is_nothrow_constructible_v) // strengthened : _Mapping_base(_Other.mapping()), _Accessor_base(_Other.accessor()), _Ptr(_Other.data_handle()) { static_assert(is_constructible_v, "The data_handle_type must be constructible from const typename OtherAccessor::data_handle_type& (N4950 " @@ -1278,7 +1300,11 @@ public: && (sizeof...(_OtherIndexTypes) == rank()) _NODISCARD constexpr reference operator[](_OtherIndexTypes... _Indices) const noexcept(noexcept(_Access_impl(static_cast(_STD move(_Indices))...))) /* strengthened */ { +#if _CONTAINER_DEBUG_LEVEL > 0 + return _Access_impl(_STD _Mdspan_checked_index_cast(_STD move(_Indices))...); +#else // ^^^ _CONTAINER_DEBUG_LEVEL > 0 / _CONTAINER_DEBUG_LEVEL <= 0 vvv return _Access_impl(static_cast(_STD move(_Indices))...); +#endif // ^^^ _CONTAINER_DEBUG_LEVEL <= 0 ^^^ } #endif // ^^^ defined(__cpp_multidimensional_subscript) ^^^ @@ -1287,7 +1313,11 @@ private: _NODISCARD constexpr reference _Multidimensional_subscript( span<_OtherIndexType, rank()> _Indices, index_sequence<_Seq...>) const noexcept(noexcept(_Access_impl(static_cast(_STD as_const(_Indices[_Seq]))...))) { +#if _CONTAINER_DEBUG_LEVEL > 0 + return _Access_impl(_STD _Mdspan_checked_index_cast(_STD as_const(_Indices[_Seq]))...); +#else // ^^^ _CONTAINER_DEBUG_LEVEL > 0 / _CONTAINER_DEBUG_LEVEL <= 0 vvv return _Access_impl(static_cast(_STD as_const(_Indices[_Seq]))...); +#endif // ^^^ _CONTAINER_DEBUG_LEVEL <= 0 ^^^ } public: @@ -1295,8 +1325,7 @@ public: requires is_convertible_v && is_nothrow_constructible_v _NODISCARD constexpr reference operator[](span<_OtherIndexType, rank()> _Indices) const - noexcept(noexcept(_Multidimensional_subscript(_Indices, make_index_sequence{}))) /* strengthened */ - { + noexcept(noexcept(_Multidimensional_subscript(_Indices, make_index_sequence{}))) /* strengthened */ { return _Multidimensional_subscript(_Indices, make_index_sequence{}); } @@ -1304,8 +1333,7 @@ public: requires is_convertible_v && is_nothrow_constructible_v _NODISCARD constexpr reference operator[](const array<_OtherIndexType, rank()>& _Indices) const noexcept( - noexcept(_Multidimensional_subscript(span{_Indices}, make_index_sequence{}))) /* strengthened */ - { + noexcept(_Multidimensional_subscript(span{_Indices}, make_index_sequence{}))) /* strengthened */ { return _Multidimensional_subscript(span{_Indices}, make_index_sequence{}); } diff --git a/stl/inc/memory b/stl/inc/memory index b65377e6390..d982b01e72f 100644 --- a/stl/inc/memory +++ b/stl/inc/memory @@ -1457,7 +1457,7 @@ struct _Can_scalar_delete<_Yty, void_t())>> template struct _Can_array_delete : false_type {}; template -struct _Can_array_delete<_Yty, void_t())>> : true_type{}; +struct _Can_array_delete<_Yty, void_t())>> : true_type {}; template struct _Can_call_function_object : false_type {}; @@ -2670,7 +2670,8 @@ private: this->~_Ref_count_unbounded_array_alloc(); - _Al.deallocate(_STD _Refancy<_Alloc_ptr_t<_Rebound_alloc>>(reinterpret_cast<_Storage*>(this)), _Storage_units); + _Al.deallocate(_STD _Refancy<_Alloc_ptr_t<_Rebound_alloc>>(reinterpret_cast<_Storage*>(this)), + static_cast<_Alloc_size_t<_Rebound_alloc>>(_Storage_units)); } }; @@ -2851,11 +2852,12 @@ struct _Allocate_n_ptr { _Alloc_ptr_t<_Alloc> _Ptr; size_t _Nx; - _Allocate_n_ptr(_Alloc& _Al_, const size_t _Nx_) : _Al(_Al_), _Ptr(_Al_.allocate(_Nx_)), _Nx(_Nx_) {} + _Allocate_n_ptr(_Alloc& _Al_, const size_t _Nx_) + : _Al(_Al_), _Ptr(_Al_.allocate(_Convert_size<_Alloc_size_t<_Alloc>>(_Nx_))), _Nx(_Nx_) {} ~_Allocate_n_ptr() { if (_Ptr) { - _Al.deallocate(_Ptr, _Nx); + _Al.deallocate(_Ptr, static_cast<_Alloc_size_t<_Alloc>>(_Nx)); } } @@ -4233,8 +4235,8 @@ private: public: explicit inout_ptr_t(_SmartPtr& _Smart_ptr_, _ArgsT... _Args_) noexcept( - is_nothrow_constructible_v, _ArgsT...>&& noexcept( - _Get_ptr_from_smart(_Smart_ptr_))) /* strengthened */ + is_nothrow_constructible_v, _ArgsT...> // + && noexcept(_Get_ptr_from_smart(_Smart_ptr_))) /* strengthened */ : _Smart_ptr(_Smart_ptr_), _Mypair(_One_then_variadic_args_t{}, tuple<_ArgsT...>{_STD forward<_ArgsT>(_Args_)...}, _Get_ptr_from_smart(_Smart_ptr_)) {} diff --git a/stl/inc/memory_resource b/stl/inc/memory_resource index 9468c2508af..05e77f60654 100644 --- a/stl/inc/memory_resource +++ b/stl/inc/memory_resource @@ -30,7 +30,6 @@ _STL_DISABLE_CLANG_WARNINGS _STD_BEGIN namespace pmr { - extern "C" _CRT_SATELLITE_1 memory_resource* __cdecl _Aligned_set_default_resource(memory_resource*) noexcept; extern "C" _CRT_SATELLITE_1 memory_resource* __cdecl _Unaligned_set_default_resource(memory_resource*) noexcept; diff --git a/stl/inc/numeric b/stl/inc/numeric index 994e14d29bf..e3c2cdc7276 100644 --- a/stl/inc/numeric +++ b/stl/inc/numeric @@ -259,7 +259,7 @@ _CONSTEXPR20 _OutIt partial_sum(const _InIt _First, const _InIt _Last, _OutIt _D #if _HAS_CXX20 _Val = _Reduce_op(_STD move(_Val), *_UFirst); #else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv - _Val = _Reduce_op(_Val, *_UFirst); + _Val = _Reduce_op(_Val, *_UFirst); #endif // ^^^ !_HAS_CXX20 ^^^ } } diff --git a/stl/inc/optional b/stl/inc/optional index 1402a769386..b18ca175333 100644 --- a/stl/inc/optional +++ b/stl/inc/optional @@ -150,7 +150,7 @@ struct _Optional_construct_base : _Optional_destruct_base<_Ty> { template _CONSTEXPR20 void _Assign(_Ty2&& _Right) noexcept( - is_nothrow_assignable_v<_Ty&, _Ty2>&& is_nothrow_constructible_v<_Ty, _Ty2>) { + is_nothrow_assignable_v<_Ty&, _Ty2> && is_nothrow_constructible_v<_Ty, _Ty2>) { // assign / initialize the contained value from _Right if (this->_Has_value) { static_cast<_Ty&>(this->_Value) = _STD forward<_Ty2>(_Right); @@ -170,8 +170,8 @@ struct _Optional_construct_base : _Optional_destruct_base<_Ty> { template _CONSTEXPR20 void _Assign_from(_Self&& _Right) noexcept( - is_nothrow_constructible_v<_Ty, decltype(*_STD forward<_Self>(_Right))>&& - is_nothrow_assignable_v<_Ty&, decltype(*_STD forward<_Self>(_Right))>) { + is_nothrow_constructible_v<_Ty, decltype(*_STD forward<_Self>(_Right))> + && is_nothrow_assignable_v<_Ty&, decltype(*_STD forward<_Self>(_Right))>) { // assign/initialize/destroy contained value from _Right if (_Right._Has_value) { _Assign(*_STD forward<_Self>(_Right)); @@ -290,7 +290,7 @@ public: is_constructible<_Ty, _Ty2>, is_assignable<_Ty&, _Ty2>>, int> = 0> _CONSTEXPR20 optional& operator=(_Ty2&& _Right) noexcept( - is_nothrow_assignable_v<_Ty&, _Ty2>&& is_nothrow_constructible_v<_Ty, _Ty2>) /* strengthened */ { + is_nothrow_assignable_v<_Ty&, _Ty2> && is_nothrow_constructible_v<_Ty, _Ty2>) /* strengthened */ { this->_Assign(_STD forward<_Ty2>(_Right)); return *this; } @@ -305,7 +305,7 @@ public: is_constructible<_Ty, const _Ty2&>, is_assignable<_Ty&, const _Ty2&>>, int> = 0> _CONSTEXPR20 optional& operator=(const optional<_Ty2>& _Right) noexcept( - is_nothrow_assignable_v<_Ty&, const _Ty2&>&& is_nothrow_constructible_v<_Ty, const _Ty2&>) /* strengthened */ { + is_nothrow_assignable_v<_Ty&, const _Ty2&> && is_nothrow_constructible_v<_Ty, const _Ty2&>) /* strengthened */ { if (_Right) { this->_Assign(*_Right); } else { @@ -319,7 +319,7 @@ public: is_assignable<_Ty&, _Ty2>>, int> = 0> _CONSTEXPR20 optional& operator=(optional<_Ty2>&& _Right) noexcept( - is_nothrow_assignable_v<_Ty&, _Ty2>&& is_nothrow_constructible_v<_Ty, _Ty2>) /* strengthened */ { + is_nothrow_assignable_v<_Ty&, _Ty2> && is_nothrow_constructible_v<_Ty, _Ty2>) /* strengthened */ { if (_Right) { this->_Assign(_STD move(*_Right)); } else { @@ -345,7 +345,7 @@ public: } _CONSTEXPR20 void swap(optional& _Right) noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_swappable_v<_Ty>) { + is_nothrow_move_constructible_v<_Ty> && is_nothrow_swappable_v<_Ty>) { static_assert(is_move_constructible_v<_Ty>, "optional::swap requires T to be move constructible (N4950 [optional.swap]/1)."); static_assert(!is_move_constructible_v<_Ty> || is_swappable_v<_Ty>, @@ -693,7 +693,7 @@ _EXPORT_STD template _NODISCARD constexpr bool operator<=(const optional<_Ty1>& _Left, const optional<_Ty2>& _Right) noexcept( noexcept(_Fake_copy_init(*_Left <= *_Right))) /* strengthened */ #ifdef __cpp_lib_concepts - requires requires(const _Ty1& _Elem1, const _Ty2& _Elem2) { + requires requires { { *_Left <= *_Right } -> _Implicitly_convertible_to; } #endif // defined(__cpp_lib_concepts) diff --git a/stl/inc/queue b/stl/inc/queue index 980fa86e1c2..9ed22d5137c 100644 --- a/stl/inc/queue +++ b/stl/inc/queue @@ -242,7 +242,8 @@ public: priority_queue() = default; explicit priority_queue(const _Pr& _Pred) noexcept( - is_nothrow_default_constructible_v<_Container>&& is_nothrow_copy_constructible_v) // strengthened + is_nothrow_default_constructible_v<_Container> + && is_nothrow_copy_constructible_v) // strengthened : c(), comp(_Pred) {} priority_queue(const _Pr& _Pred, const _Container& _Cont) : c(_Cont), comp(_Pred) { @@ -284,13 +285,15 @@ public: #endif // _HAS_CXX23 && defined(__cpp_lib_concepts) template , int> = 0> - explicit priority_queue(const _Alloc& _Al) noexcept(is_nothrow_constructible_v<_Container, const _Alloc&>&& - is_nothrow_default_constructible_v) // strengthened + explicit priority_queue(const _Alloc& _Al) noexcept( + is_nothrow_constructible_v<_Container, const _Alloc&> + && is_nothrow_default_constructible_v) // strengthened : c(_Al), comp() {} template , int> = 0> - priority_queue(const _Pr& _Pred, const _Alloc& _Al) noexcept(is_nothrow_constructible_v<_Container, const _Alloc&>&& - is_nothrow_copy_constructible_v) // strengthened + priority_queue(const _Pr& _Pred, const _Alloc& _Al) noexcept( + is_nothrow_constructible_v<_Container, const _Alloc&> + && is_nothrow_copy_constructible_v) // strengthened : c(_Al), comp(_Pred) {} template , int> = 0> @@ -308,8 +311,8 @@ public: template , int> = 0> priority_queue(priority_queue&& _Right, const _Alloc& _Al) noexcept( - is_nothrow_constructible_v<_Container, _Container, const _Alloc&>&& - is_nothrow_move_constructible_v) // strengthened + is_nothrow_constructible_v<_Container, _Container, const _Alloc&> + && is_nothrow_move_constructible_v) // strengthened : c(_STD move(_Right.c), _Al), comp(_STD move(_Right.comp)) {} template ::value&& _Is_nothrow_swappable<_Pr>::value) { + _Is_nothrow_swappable<_Container>::value && _Is_nothrow_swappable<_Pr>::value) { using _STD swap; swap(c, _Right.c); // intentional ADL swap(comp, _Right.comp); // intentional ADL diff --git a/stl/inc/random b/stl/inc/random index 318884284ae..fd52ee177e7 100644 --- a/stl/inc/random +++ b/stl/inc/random @@ -2089,12 +2089,7 @@ private: static _Uty _Adjust(_Uty _Uval) noexcept { // convert signed ranges to unsigned ranges and vice versa if constexpr (is_signed_v<_Ty>) { constexpr _Uty _Adjuster = (static_cast<_Uty>(-1) >> 1) + 1; // 2^(N-1) - - if (_Uval < _Adjuster) { - return static_cast<_Uty>(_Uval + _Adjuster); - } else { - return static_cast<_Uty>(_Uval - _Adjuster); - } + return static_cast<_Uty>(_Uval ^ _Adjuster); } else { // _Ty is already unsigned, do nothing return _Uval; } diff --git a/stl/inc/ranges b/stl/inc/ranges index b71c8e8231f..7d4ffc38d7f 100644 --- a/stl/inc/ranges +++ b/stl/inc/ranges @@ -130,37 +130,44 @@ namespace ranges { template constexpr explicit _Pipeline(_Ty1&& _Val1, _Ty2&& _Val2) noexcept( - is_nothrow_constructible_v<_Ty1, _ClosureLeft>&& is_nothrow_constructible_v<_Ty2, _ClosureRight>) + is_nothrow_constructible_v<_Ty1, _ClosureLeft> && is_nothrow_constructible_v<_Ty2, _ClosureRight>) : _Left(_STD forward<_Ty1>(_Val1)), _Right(_STD forward<_Ty2>(_Val2)) {} + void operator()(auto&&) & = delete; + void operator()(auto&&) const& = delete; + void operator()(auto&&) && = delete; + void operator()(auto&&) const&& = delete; + + // TRANSITION, DevCom-10519736, explicit `this->` shouldn't be needed. + template - _NODISCARD constexpr auto operator()(_Ty&& _Val) & noexcept( + _NODISCARD constexpr decltype(auto) operator()(_Ty && _Val) & noexcept( noexcept(_Right(_Left(_STD forward<_Ty>(_Val))))) - requires requires { _Right(_Left(_STD forward<_Ty>(_Val))); } + requires requires { this->_Right(this->_Left(_STD forward<_Ty>(_Val))); } { return _Right(_Left(_STD forward<_Ty>(_Val))); } template - _NODISCARD constexpr auto operator()(_Ty&& _Val) const& noexcept( + _NODISCARD constexpr decltype(auto) operator()(_Ty && _Val) const& noexcept( noexcept(_Right(_Left(_STD forward<_Ty>(_Val))))) - requires requires { _Right(_Left(_STD forward<_Ty>(_Val))); } + requires requires { this->_Right(this->_Left(_STD forward<_Ty>(_Val))); } { return _Right(_Left(_STD forward<_Ty>(_Val))); } template - _NODISCARD constexpr auto operator()(_Ty&& _Val) && noexcept( + _NODISCARD constexpr decltype(auto) operator()(_Ty && _Val) && noexcept( noexcept(_STD move(_Right)(_STD move(_Left)(_STD forward<_Ty>(_Val))))) - requires requires { _STD move(_Right)(_STD move(_Left)(_STD forward<_Ty>(_Val))); } + requires requires { _STD move(this->_Right)(_STD move(this->_Left)(_STD forward<_Ty>(_Val))); } { return _STD move(_Right)(_STD move(_Left)(_STD forward<_Ty>(_Val))); } template - _NODISCARD constexpr auto operator()(_Ty&& _Val) const&& noexcept( + _NODISCARD constexpr decltype(auto) operator()(_Ty && _Val) const&& noexcept( noexcept(_STD move(_Right)(_STD move(_Left)(_STD forward<_Ty>(_Val))))) - requires requires { _STD move(_Right)(_STD move(_Left)(_STD forward<_Ty>(_Val))); } + requires requires { _STD move(this->_Right)(_STD move(this->_Left)(_STD forward<_Ty>(_Val))); } { return _STD move(_Right)(_STD move(_Left)(_STD forward<_Ty>(_Val))); } @@ -180,7 +187,7 @@ namespace ranges { _EXPORT_STD template requires (_Range_adaptor_closure_object<_Right> && range<_Left>) - _NODISCARD constexpr auto operator|(_Left&& __l, _Right&& __r) noexcept( + _NODISCARD constexpr decltype(auto) operator|(_Left && __l, _Right && __r) noexcept( noexcept(_STD forward<_Right>(__r)(_STD forward<_Left>(__l)))) requires requires { static_cast<_Right&&>(__r)(static_cast<_Left&&>(__l)); } { @@ -335,7 +342,7 @@ namespace ranges { // clang-format on constexpr _Movable_box& operator=(const _Movable_box& _That) noexcept( - is_nothrow_copy_constructible_v<_Ty>&& is_nothrow_copy_assignable_v<_Ty>) // strengthened + is_nothrow_copy_constructible_v<_Ty> && is_nothrow_copy_assignable_v<_Ty>) // strengthened requires copyable<_Ty> { if (_Engaged) { @@ -383,7 +390,7 @@ namespace ranges { // clang-format on constexpr _Movable_box& operator=(_Movable_box&& _That) noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_assignable_v<_Ty>) // strengthened + is_nothrow_move_constructible_v<_Ty> && is_nothrow_move_assignable_v<_Ty>) // strengthened requires movable<_Ty> { if (_Engaged) { @@ -593,7 +600,7 @@ namespace ranges { // clang-format on constexpr _Defaultabox& operator=(const _Defaultabox& _That) noexcept( - is_nothrow_copy_constructible_v<_Ty>&& is_nothrow_copy_assignable_v<_Ty>) + is_nothrow_copy_constructible_v<_Ty> && is_nothrow_copy_assignable_v<_Ty>) requires copyable<_Ty> { if (_Engaged) { @@ -620,7 +627,7 @@ namespace ranges { // clang-format on constexpr _Defaultabox& operator=(_Defaultabox&& _That) noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_assignable_v<_Ty>) { + is_nothrow_move_constructible_v<_Ty> && is_nothrow_move_assignable_v<_Ty>) { if (_Engaged) { if (_That._Engaged) { static_cast<_Ty&>(_Val) = static_cast<_Ty&&>(_That._Val); @@ -641,7 +648,7 @@ namespace ranges { } constexpr _Defaultabox& operator=(_Ty&& _That) noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_assignable_v<_Ty>) { + is_nothrow_move_constructible_v<_Ty> && is_nothrow_move_assignable_v<_Ty>) { if (_Engaged) { static_cast<_Ty&>(_Val) = _STD move(_That); } else { @@ -653,7 +660,7 @@ namespace ranges { } constexpr _Defaultabox& operator=(const _Ty& _That) noexcept( - is_nothrow_copy_constructible_v<_Ty>&& is_nothrow_copy_assignable_v<_Ty>) + is_nothrow_copy_constructible_v<_Ty> && is_nothrow_copy_assignable_v<_Ty>) requires copyable<_Ty> { if (_Engaged) { @@ -708,8 +715,8 @@ namespace ranges { template <_Different_from<_Ty> _Uty> requires convertible_to - constexpr _Defaultabox(const _Defaultabox<_Uty>& _That) noexcept( - is_nothrow_default_constructible_v<_Ty>&& noexcept(_Value = static_cast<_Ty>(*_That))) { + constexpr _Defaultabox(const _Defaultabox<_Uty>& _That) noexcept(is_nothrow_default_constructible_v<_Ty> // + && noexcept(_Value = static_cast<_Ty>(*_That))) { if (_That) { _Value = static_cast<_Ty>(*_That); } @@ -717,8 +724,8 @@ namespace ranges { template <_Different_from<_Ty> _Uty> requires convertible_to<_Uty, _Ty> - constexpr _Defaultabox(_Defaultabox<_Uty>&& _That) noexcept( - is_nothrow_default_constructible_v<_Ty>&& noexcept(_Value = static_cast<_Ty>(_STD move(*_That)))) { + constexpr _Defaultabox(_Defaultabox<_Uty>&& _That) noexcept(is_nothrow_default_constructible_v<_Ty> // + && noexcept(_Value = static_cast<_Ty>(_STD move(*_That)))) { if (_That) { _Value = static_cast<_Ty>(_STD move(*_That)); } @@ -915,28 +922,28 @@ namespace ranges { template requires invocable<_Fn, _Ty, _Types&...> - constexpr decltype(auto) operator()(_Ty&& _Arg) & noexcept( + constexpr decltype(auto) operator()(_Ty && _Arg) & noexcept( noexcept(_Call(*this, _STD forward<_Ty>(_Arg), _Indices{}))) { return _Call(*this, _STD forward<_Ty>(_Arg), _Indices{}); } template requires invocable<_Fn, _Ty, const _Types&...> - constexpr decltype(auto) operator()(_Ty&& _Arg) const& noexcept( + constexpr decltype(auto) operator()(_Ty && _Arg) const& noexcept( noexcept(_Call(*this, _STD forward<_Ty>(_Arg), _Indices{}))) { return _Call(*this, _STD forward<_Ty>(_Arg), _Indices{}); } template requires invocable<_Fn, _Ty, _Types...> - constexpr decltype(auto) operator()(_Ty&& _Arg) && noexcept( + constexpr decltype(auto) operator()(_Ty && _Arg) && noexcept( noexcept(_Call(_STD move(*this), _STD forward<_Ty>(_Arg), _Indices{}))) { return _Call(_STD move(*this), _STD forward<_Ty>(_Arg), _Indices{}); } template requires invocable<_Fn, _Ty, const _Types...> - constexpr decltype(auto) operator()(_Ty&& _Arg) const&& noexcept( + constexpr decltype(auto) operator()(_Ty && _Arg) const&& noexcept( noexcept(_Call(_STD move(*this), _STD forward<_Ty>(_Arg), _Indices{}))) { return _Call(_STD move(*this), _STD forward<_Ty>(_Arg), _Indices{}); } @@ -1130,8 +1137,8 @@ namespace ranges { return *this; } - constexpr _Ioterator operator--(int) noexcept( - is_nothrow_copy_constructible_v<_Wi>&& noexcept(--_Current)) /* strengthened */ + constexpr _Ioterator operator--(int) noexcept(is_nothrow_copy_constructible_v<_Wi> // + && noexcept(--_Current)) /* strengthened */ requires _Decrementable<_Wi> { auto _Tmp = *this; @@ -1253,21 +1260,24 @@ namespace ranges { } _NODISCARD_FRIEND constexpr _Ioterator operator+(_Ioterator _It, const difference_type _Off) noexcept( - is_nothrow_move_constructible_v<_Ioterator>&& noexcept(_It += _Off)) /* strengthened */ + is_nothrow_move_constructible_v<_Ioterator> // + && noexcept(_It += _Off)) /* strengthened */ requires _Advanceable<_Wi> { _It += _Off; return _It; } _NODISCARD_FRIEND constexpr _Ioterator operator+(const difference_type _Off, _Ioterator _It) noexcept( - is_nothrow_move_constructible_v<_Wi>&& noexcept(static_cast<_Wi>(_It._Current + _Off))) /* strengthened */ + is_nothrow_move_constructible_v<_Wi> // + && noexcept(static_cast<_Wi>(_It._Current + _Off))) /* strengthened */ requires _Advanceable<_Wi> { return _Ioterator{static_cast<_Wi>(_It._Current + _Off)}; } _NODISCARD_FRIEND constexpr _Ioterator operator-(_Ioterator _It, const difference_type _Off) noexcept( - is_nothrow_move_constructible_v<_Ioterator>&& noexcept(_It -= _Off)) /* strengthened */ + is_nothrow_move_constructible_v<_Ioterator> // + && noexcept(_It -= _Off)) /* strengthened */ requires _Advanceable<_Wi> { _It -= _Off; @@ -1360,7 +1370,7 @@ namespace ranges { // clang-format on constexpr explicit iota_view(_Wi _Value_) noexcept( - is_nothrow_move_constructible_v<_Wi>&& is_nothrow_default_constructible_v<_Bo>) // strengthened + is_nothrow_move_constructible_v<_Wi> && is_nothrow_default_constructible_v<_Bo>) // strengthened : _Value(_STD move(_Value_)) { if constexpr (totally_ordered_with<_Wi, _Bo>) { _STL_ASSERT(_Value_ <= _Bound, "Per N4950 [range.iota.view]/6, the first argument must not exceed the " @@ -1369,7 +1379,7 @@ namespace ranges { } constexpr explicit iota_view(type_identity_t<_Wi> _Value_, type_identity_t<_Bo> _Bound_) noexcept( - is_nothrow_move_constructible_v<_Wi>&& is_nothrow_move_constructible_v<_Bo>) // strengthened + is_nothrow_move_constructible_v<_Wi> && is_nothrow_move_constructible_v<_Bo>) // strengthened : _Value(_STD move(_Value_)), _Bound(_STD move(_Bound_)) { if constexpr (totally_ordered_with<_Wi, _Bo>) { _STL_ASSERT(_Value_ <= _Bound_, "Per N4950 [range.iota.view]/8, the first argument must not exceed the " @@ -1378,7 +1388,7 @@ namespace ranges { } constexpr explicit iota_view(_It _First, _Se _Last) noexcept( - is_nothrow_move_constructible_v<_Wi>&& is_nothrow_move_constructible_v<_Bo>) // strengthened + is_nothrow_move_constructible_v<_Wi> && is_nothrow_move_constructible_v<_Bo>) // strengthened : _Value(_STD move(_First._Current)), _Bound(_STD move(_Bound_from(_Last))) {} _NODISCARD constexpr _It begin() const noexcept(is_nothrow_copy_constructible_v<_Wi>) /* strengthened */ { @@ -1638,8 +1648,8 @@ namespace ranges { template requires constructible_from<_Ty, _TArgs...> && constructible_from<_Bo, _BArgs...> _NODISCARD_CTOR constexpr explicit repeat_view(piecewise_construct_t, tuple<_TArgs...> _Val_args, - tuple<_BArgs...> _Bound_args = tuple<>{}) noexcept(is_nothrow_constructible_v<_Ty, - _TArgs...>&& noexcept(_STD make_from_tuple<_Bo>(_Bound_args))) // strengthened + tuple<_BArgs...> _Bound_args = tuple<>{}) noexcept(is_nothrow_constructible_v<_Ty, _TArgs...> // + && noexcept(_STD make_from_tuple<_Bo>(_Bound_args))) // strengthened : repeat_view(_Val_args, index_sequence_for<_TArgs...>{}, _STD make_from_tuple<_Bo>(_Bound_args)) { #if _CONTAINER_DEBUG_LEVEL > 0 if constexpr (_Signed_integer_like<_Bo>) { @@ -2325,7 +2335,7 @@ namespace ranges { // clang-format on constexpr explicit filter_view(_Vw _Range_, _Pr _Pred_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Pr>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Pr>) // strengthened : _Range(_STD move(_Range_)), _Pred{in_place, _STD move(_Pred_)} {} _NODISCARD constexpr _Vw base() const& noexcept(is_nothrow_copy_constructible_v<_Vw>) /* strengthened */ @@ -2740,7 +2750,7 @@ namespace ranges { // clang-format on constexpr explicit transform_view(_Vw _Range_, _Fn _Fun_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Fn>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Fn>) // strengthened : _Range(_STD move(_Range_)), _Fun{in_place, _STD move(_Fun_)} {} _NODISCARD constexpr _Vw base() const& noexcept(is_nothrow_copy_constructible_v<_Vw>) /* strengthened */ @@ -3206,7 +3216,7 @@ namespace ranges { // clang-format on constexpr explicit take_while_view(_Vw _Range_, _Pr _Pred_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Pr>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Pr>) // strengthened : _Range(_STD move(_Range_)), _Pred{in_place, _STD move(_Pred_)} {} _NODISCARD constexpr _Vw base() const& noexcept(is_nothrow_copy_constructible_v<_Vw>) /* strengthened */ @@ -3540,7 +3550,7 @@ namespace ranges { // clang-format on constexpr explicit drop_while_view(_Vw _Range_, _Pr _Pred_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Pr>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Pr>) // strengthened : _Range(_STD move(_Range_)), _Pred{in_place, _STD move(_Pred_)} {} _NODISCARD constexpr _Vw base() const& noexcept(is_nothrow_copy_constructible_v<_Vw>) /* strengthened */ @@ -4467,7 +4477,7 @@ namespace ranges { // clang-format on constexpr explicit join_with_view(_Vw _Range_, _Pat _Pattern_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Pat>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Pat>) // strengthened : _Range{_STD move(_Range_)}, _Pattern{_STD move(_Pattern_)} {} template @@ -4914,7 +4924,7 @@ namespace ranges { // clang-format on constexpr explicit lazy_split_view(_Vw _Range_, _Pat _Pattern_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Pat>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Pat>) // strengthened : _Range(_STD move(_Range_)), _Pattern(_STD move(_Pattern_)) {} template @@ -5117,19 +5127,17 @@ namespace ranges { // clang-format on constexpr explicit split_view(_Vw _Range_, _Pat _Pattern_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Pat>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Pat>) // strengthened : _Range(_STD move(_Range_)), _Pattern(_STD move(_Pattern_)) {} - // clang-format off template requires constructible_from<_Vw, views::all_t<_Rng>> - && constructible_from<_Pat, single_view>> - constexpr explicit split_view(_Rng&& _Range_, range_value_t<_Rng> _Elem) - noexcept(is_nothrow_constructible_v<_Vw, views::all_t<_Rng>> - && is_nothrow_constructible_v<_Pat, single_view>> - && is_nothrow_move_constructible_v>) // strengthened + && constructible_from<_Pat, single_view>> + constexpr explicit split_view(_Rng&& _Range_, range_value_t<_Rng> _Elem) noexcept( + is_nothrow_constructible_v<_Vw, views::all_t<_Rng>> + && is_nothrow_constructible_v<_Pat, single_view>> + && is_nothrow_move_constructible_v>) // strengthened : _Range(views::all(_STD forward<_Rng>(_Range_))), _Pattern(views::single(_STD move(_Elem))) {} - // clang-format on _NODISCARD constexpr _Vw base() const& noexcept(is_nothrow_copy_constructible_v<_Vw>) /* strengthened */ requires copy_constructible<_Vw> @@ -6218,8 +6226,8 @@ namespace ranges { } _NODISCARD_FRIEND constexpr _Iterator operator+(const _Iterator& _It, const difference_type _Off) noexcept( - is_nothrow_copy_constructible_v<_Iterator>&& noexcept( - _STD declval<_Iterator&>() += _Off)) // strengthened + is_nothrow_copy_constructible_v<_Iterator> // + && noexcept(_STD declval<_Iterator&>() += _Off)) // strengthened requires random_access_range<_Base_t> { auto _Tmp = _It; @@ -6235,8 +6243,8 @@ namespace ranges { } _NODISCARD_FRIEND constexpr _Iterator operator-(const _Iterator& _It, const difference_type _Off) noexcept( - is_nothrow_copy_constructible_v<_Iterator>&& noexcept( - _STD declval<_Iterator&>() -= _Off)) // strengthened + is_nothrow_copy_constructible_v<_Iterator> // + && noexcept(_STD declval<_Iterator&>() -= _Off)) // strengthened requires random_access_range<_Base_t> { auto _Tmp = _It; @@ -6724,7 +6732,7 @@ namespace ranges { constexpr _Iterator(_Iterator _Other) noexcept( is_nothrow_constructible_v<_Base_iterator, typename _Iterator::_Base_iterator> // - && is_nothrow_constructible_v<_Base_sentinel, typename _Iterator::_Base_sentinel> // + && is_nothrow_constructible_v<_Base_sentinel, typename _Iterator::_Base_sentinel> // ) /* strengthened */ requires _Const && convertible_to, _Base_iterator> && convertible_to, _Base_sentinel> @@ -6863,8 +6871,8 @@ namespace ranges { } _NODISCARD_FRIEND constexpr _Iterator operator+(const _Iterator& _It, const difference_type _Off) noexcept( - is_nothrow_copy_constructible_v<_Iterator>&& noexcept( - _STD declval<_Iterator&>() += _Off)) /* strengthened */ + is_nothrow_copy_constructible_v<_Iterator> // + && noexcept(_STD declval<_Iterator&>() += _Off)) /* strengthened */ requires random_access_range<_Base> { auto _Copy = _It; @@ -6873,8 +6881,8 @@ namespace ranges { } _NODISCARD_FRIEND constexpr _Iterator operator+(const difference_type _Off, const _Iterator& _It) noexcept( - is_nothrow_copy_constructible_v<_Iterator>&& noexcept( - _STD declval<_Iterator&>() += _Off)) /* strengthened */ + is_nothrow_copy_constructible_v<_Iterator> // + && noexcept(_STD declval<_Iterator&>() += _Off)) /* strengthened */ requires random_access_range<_Base> { auto _Copy = _It; @@ -6883,8 +6891,8 @@ namespace ranges { } _NODISCARD_FRIEND constexpr _Iterator operator-(const _Iterator& _It, const difference_type _Off) noexcept( - is_nothrow_copy_constructible_v<_Iterator>&& noexcept( - _STD declval<_Iterator&>() -= _Off)) /* strengthened */ + is_nothrow_copy_constructible_v<_Iterator> // + && noexcept(_STD declval<_Iterator&>() -= _Off)) /* strengthened */ requires random_access_range<_Base> { auto _Copy = _It; @@ -7117,8 +7125,8 @@ namespace ranges { return *this; } - constexpr _Iterator operator++(int) noexcept( - is_nothrow_copy_constructible_v<_Base_iterator>&& noexcept(++_Current)) /* strengthened */ { + constexpr _Iterator operator++(int) noexcept(is_nothrow_copy_constructible_v<_Base_iterator> // + && noexcept(++_Current)) /* strengthened */ { auto _Tmp = *this; ++*this; return _Tmp; @@ -7135,8 +7143,8 @@ namespace ranges { return *this; } - constexpr _Iterator operator--(int) noexcept( - is_nothrow_copy_constructible_v<_Base_iterator>&& noexcept(--_Current)) /* strengthened */ + constexpr _Iterator operator--(int) noexcept(is_nothrow_copy_constructible_v<_Base_iterator> // + && noexcept(--_Current)) /* strengthened */ requires bidirectional_range<_Base> { auto _Tmp = *this; @@ -7559,7 +7567,7 @@ namespace ranges { // clang-format on constexpr explicit chunk_by_view(_Vw _Range_, _Pr _Pred_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Pr>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Pr>) // strengthened : _Range(_STD move(_Range_)), _Pred{in_place, _STD move(_Pred_)} {} _NODISCARD constexpr _Vw base() const& noexcept(is_nothrow_copy_constructible_v<_Vw>) /* strengthened */ @@ -7687,7 +7695,7 @@ namespace ranges { constexpr _Iterator(_Iterator _Other) noexcept( is_nothrow_constructible_v<_Base_iterator, iterator_t<_Vw>> // - && is_nothrow_constructible_v<_Base_sentinel, sentinel_t<_Vw>> // + && is_nothrow_constructible_v<_Base_sentinel, sentinel_t<_Vw>> // ) /* strengthened */ requires _Const && convertible_to, _Base_iterator> && convertible_to, _Base_sentinel> @@ -8107,7 +8115,7 @@ namespace ranges { // clang-format on const auto _Evaluate_equality_closure = [&_Lhs_tuple, &_Rhs_tuple](index_sequence<_Indices...>) noexcept( - (noexcept(_STD declval() == _STD declval()) && ...)) { + (noexcept(_STD declval() == _STD declval())&&...)) { return ((_STD get<_Indices>(_Lhs_tuple) == _STD get<_Indices>(_Rhs_tuple)) || ...); }; @@ -8628,8 +8636,8 @@ namespace ranges { ++*this; } - constexpr _Iterator operator++(int) noexcept( - is_nothrow_copy_constructible_v<_Iterator>&& noexcept(++*this)) // strengthened + constexpr _Iterator operator++(int) noexcept(is_nothrow_copy_constructible_v<_Iterator> // + && noexcept(++*this)) // strengthened requires forward_range<_Base_t> { auto _Temp = *this; @@ -8644,8 +8652,8 @@ namespace ranges { return *this; } - constexpr _Iterator operator--(int) noexcept( - is_nothrow_copy_constructible_v<_Iterator>&& noexcept(--*this)) // strengthened + constexpr _Iterator operator--(int) noexcept(is_nothrow_copy_constructible_v<_Iterator> // + && noexcept(--*this)) // strengthened requires bidirectional_range<_Base_t> { auto _Temp = *this; @@ -8773,7 +8781,7 @@ namespace ranges { template requires sized_sentinel_for<_Zentinel<_IsConst>, _Ziperator<_IteratorConst>> _NODISCARD_FRIEND constexpr _Iter_sent_difference_type<_IteratorConst> // TRANSITION, DevCom-10253131 - operator-(const _Iterator<_IteratorConst>& _Lhs, const _Sentinel& _Rhs) noexcept( + operator-(const _Iterator<_IteratorConst>& _Lhs, const _Sentinel & _Rhs) noexcept( noexcept(_Get_iterator_inner(_Lhs) - _Rhs._Inner)) /* strengthened */ { return _Get_iterator_inner(_Lhs) - _Rhs._Inner; } @@ -8781,7 +8789,7 @@ namespace ranges { template requires sized_sentinel_for<_Zentinel<_IsConst>, _Ziperator<_IteratorConst>> _NODISCARD_FRIEND constexpr _Iter_sent_difference_type<_IteratorConst> // TRANSITION, DevCom-10253131 - operator-(const _Sentinel& _Lhs, const _Iterator<_IteratorConst>& _Rhs) noexcept( + operator-(const _Sentinel & _Lhs, const _Iterator<_IteratorConst>& _Rhs) noexcept( noexcept(_Lhs._Inner - _Get_iterator_inner(_Rhs))) /* strengthened */ { return _Lhs._Inner - _Get_iterator_inner(_Rhs); } @@ -8804,8 +8812,8 @@ namespace ranges { zip_transform_view() = default; constexpr explicit zip_transform_view(_Func _Function_, _ViewTypes... _Views) noexcept( - is_nothrow_move_constructible_v<_Func>&& - is_nothrow_constructible_v<_Inner_view, remove_reference_t<_ViewTypes>&&...>) // strengthened + is_nothrow_move_constructible_v<_Func> + && is_nothrow_constructible_v<_Inner_view, remove_reference_t<_ViewTypes>&&...>) // strengthened : _Function(in_place, _STD move(_Function_)), _Zip(_STD move(_Views)...) {} _NODISCARD constexpr auto begin() noexcept(noexcept(_Iterator{*this, _Zip.begin()})) /* strengthened */ { @@ -9610,7 +9618,7 @@ namespace ranges { adjacent_transform_view() = default; constexpr explicit adjacent_transform_view(_Vw _Range_, _Fn _Func_) noexcept( - is_nothrow_move_constructible_v<_Vw>&& is_nothrow_move_constructible_v<_Fn>) // strengthened + is_nothrow_move_constructible_v<_Vw> && is_nothrow_move_constructible_v<_Fn>) // strengthened : _Func(in_place, _STD move(_Func_)), _Inner(_STD move(_Range_)) {} _NODISCARD constexpr _Vw base() const& noexcept(noexcept(_Inner.base())) // strengthened @@ -10298,7 +10306,7 @@ namespace ranges { } else if constexpr (_Converts_tag_constructible<_Rng, _Container, _Types...>) { return _Container(from_range, _STD forward<_Rng>(_Range), _STD forward<_Types>(_Args)...); } else if constexpr (_Converts_and_common_constructible<_Rng, _Container, _Types...>) { - return _Container(_RANGES begin(_Range), _RANGES end(_Range), _STD forward<_Types...>(_Args)...); + return _Container(_RANGES begin(_Range), _RANGES end(_Range), _STD forward<_Types>(_Args)...); } else if constexpr (_Converts_constructible_insertable<_Rng, _Container, _Types...>) { _Container _Cont(_STD forward<_Types>(_Args)...); if constexpr (_Sized_and_reservable<_Rng, _Container>) { diff --git a/stl/inc/regex b/stl/inc/regex index b1bbda55544..b7a291be525 100644 --- a/stl/inc/regex +++ b/stl/inc/regex @@ -907,7 +907,7 @@ _NODISCARD bool operator==( _EXPORT_STD template _NODISCARD auto operator<=>( const sub_match<_BidIt>& _Left, const basic_string<_Iter_value_t<_BidIt>, _Traits, _Alloc>& _Right) { - return static_cast::_Comparison_category>(_Left.compare(_Right) <=> 0); + return static_cast::_Comparison_category>(_Left._Compare(_Right.data(), _Right.size()) <=> 0); } #else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv template diff --git a/stl/inc/set b/stl/inc/set index 8e5ed0ea963..5c228812caf 100644 --- a/stl/inc/set +++ b/stl/inc/set @@ -143,7 +143,7 @@ public: set(set&& _Right, const allocator_type& _Al) : _Mybase(_STD move(_Right), _Al) {} - set& operator=(set&& _Right) noexcept(_Alnode_traits::is_always_equal::value&& is_nothrow_move_assignable_v<_Pr>) { + set& operator=(set&& _Right) noexcept(_Alnode_traits::is_always_equal::value && is_nothrow_move_assignable_v<_Pr>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -256,7 +256,7 @@ void swap(set<_Kty, _Pr, _Alloc>& _Left, set<_Kty, _Pr, _Alloc>& _Right) noexcep #if _HAS_CXX20 _EXPORT_STD template set<_Kty, _Keylt, _Alloc>::size_type erase_if(set<_Kty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 @@ -354,7 +354,7 @@ public: multiset(multiset&& _Right, const allocator_type& _Al) : _Mybase(_STD move(_Right), _Al) {} multiset& operator=(multiset&& _Right) noexcept( - _Alnode_traits::is_always_equal::value&& is_nothrow_move_assignable_v<_Pr>) { + _Alnode_traits::is_always_equal::value && is_nothrow_move_assignable_v<_Pr>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -474,7 +474,7 @@ void swap(multiset<_Kty, _Pr, _Alloc>& _Left, multiset<_Kty, _Pr, _Alloc>& _Righ #if _HAS_CXX20 _EXPORT_STD template multiset<_Kty, _Keylt, _Alloc>::size_type erase_if(multiset<_Kty, _Keylt, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/source_location b/stl/inc/source_location index 31d5fb34cbb..2d3490f76f7 100644 --- a/stl/inc/source_location +++ b/stl/inc/source_location @@ -23,11 +23,9 @@ _STL_DISABLE_CLANG_WARNINGS #ifndef _USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION #ifdef __EDG__ // TRANSITION, DevCom-10199227 #define _USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION 0 -#elif defined(__clang__) // TRANSITION, Clang 17 has this builtin -#define _USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION __has_builtin(__builtin_FUNCSIG) -#else // ^^^ Clang / MSVC vvv +#else // ^^^ workaround / no workaround vvv #define _USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION 1 -#endif // ^^^ MSVC ^^^ +#endif // ^^^ no workaround ^^^ #endif // ^^^ !defined(_USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION) ^^^ _STD_BEGIN diff --git a/stl/inc/span b/stl/inc/span index 24980bdc5cd..df3a5a47dfe 100644 --- a/stl/inc/span +++ b/stl/inc/span @@ -30,7 +30,7 @@ _EXPORT_STD inline constexpr size_t dynamic_extent = static_cast(-1); template struct _Span_iterator { #ifdef __cpp_lib_concepts - using iterator_concept = contiguous_iterator_tag; + using iterator_concept = contiguous_iterator_tag; #endif // defined(__cpp_lib_concepts) using iterator_category = random_access_iterator_tag; using value_type = remove_cv_t<_Ty>; @@ -178,7 +178,7 @@ struct _Span_iterator { _Myptr = _It; } - pointer _Myptr = nullptr; + pointer _Myptr = nullptr; #if _ITERATOR_DEBUG_LEVEL >= 1 pointer _Mybegin = nullptr; pointer _Myend = nullptr; @@ -301,16 +301,16 @@ private: using _Mybase::_Mysize; public: - using element_type = _Ty; - using value_type = remove_cv_t<_Ty>; - using size_type = size_t; - using difference_type = ptrdiff_t; - using pointer = _Ty*; - using const_pointer = const _Ty*; - using reference = _Ty&; - using const_reference = const _Ty&; - using iterator = _Span_iterator<_Ty>; - using reverse_iterator = _STD reverse_iterator; + using element_type = _Ty; + using value_type = remove_cv_t<_Ty>; + using size_type = size_t; + using difference_type = ptrdiff_t; + using pointer = _Ty*; + using const_pointer = const _Ty*; + using reference = _Ty&; + using const_reference = const _Ty&; + using iterator = _Span_iterator<_Ty>; + using reverse_iterator = _STD reverse_iterator; #if _HAS_CXX23 && defined(__cpp_lib_concepts) using const_iterator = _STD const_iterator; using const_reverse_iterator = _STD const_iterator; @@ -323,6 +323,7 @@ public: // clang-format off constexpr span() noexcept requires (_Extent == 0 || _Extent == dynamic_extent) = default; + // clang-format on template <_Span_compatible_iterator _It> constexpr explicit(_Extent != dynamic_extent) span(_It _First, size_type _Count) noexcept // strengthened @@ -336,8 +337,8 @@ public: } template <_Span_compatible_iterator _It, _Span_compatible_sentinel<_It> _Sentinel> - constexpr explicit(_Extent != dynamic_extent) span(_It _First, _Sentinel _Last) - noexcept(noexcept(_Last - _First)) // strengthened + constexpr explicit(_Extent != dynamic_extent) + span(_It _First, _Sentinel _Last) noexcept(noexcept(_Last - _First)) // strengthened : _Mybase(_STD to_address(_First), static_cast(_Last - _First)) { _Adl_verify_range(_First, _Last); #if _CONTAINER_DEBUG_LEVEL > 0 @@ -353,8 +354,7 @@ public: constexpr span(type_identity_t (&_Arr)[_Size]) noexcept : _Mybase(_Arr, _Size) {} template - requires (_Extent == dynamic_extent || _Extent == _Size) - && is_convertible_v<_OtherTy (*)[], element_type (*)[]> + requires (_Extent == dynamic_extent || _Extent == _Size) && is_convertible_v<_OtherTy (*)[], element_type (*)[]> constexpr span(array<_OtherTy, _Size>& _Arr) noexcept : _Mybase(_Arr.data(), _Size) {} template @@ -371,13 +371,13 @@ public: "Cannot construct span with static extent from range r as std::ranges::size(r) != extent"); } #endif // _CONTAINER_DEBUG_LEVEL > 0 - } + } template requires (_Extent == dynamic_extent || _OtherExtent == dynamic_extent || _Extent == _OtherExtent) && is_convertible_v<_OtherTy (*)[], element_type (*)[]> constexpr explicit(_Extent != dynamic_extent && _OtherExtent == dynamic_extent) - span(const span<_OtherTy, _OtherExtent>& _Other) noexcept + span(const span<_OtherTy, _OtherExtent>& _Other) noexcept : _Mybase(_Other.data(), _Other.size()) { #if _CONTAINER_DEBUG_LEVEL > 0 if constexpr (_Extent != dynamic_extent) { @@ -385,8 +385,7 @@ public: "Cannot construct span with static extent from other span as other.size() != extent"); } #endif // _CONTAINER_DEBUG_LEVEL > 0 - } - // clang-format on + } #else // ^^^ defined(__cpp_lib_concepts) / !defined(__cpp_lib_concepts) vvv diff --git a/stl/inc/sstream b/stl/inc/sstream index 2d38233b381..59f0e6b6c05 100644 --- a/stl/inc/sstream +++ b/stl/inc/sstream @@ -54,7 +54,7 @@ public: template basic_stringbuf(const basic_string<_Elem, _Traits, _Alloc2>& _Str, ios_base::openmode _Mode, const _Alloc& _Al_) : _Al(_Al_) { - _Init(_Str.c_str(), _Str.size(), _Getstate(_Mode)); + _Init(_Str.c_str(), _Convert_size<_Mysize_type>(_Str.size()), _Getstate(_Mode)); } template @@ -243,13 +243,13 @@ protected: } // grow buffer and store element - size_t _Oldsize = 0; - const auto _Oldptr = _Mysb::eback(); + _Mysize_type _Oldsize = 0; + const auto _Oldptr = _Mysb::eback(); if (_Pptr) { - _Oldsize = static_cast(_Epptr - _Oldptr); + _Oldsize = static_cast<_Mysize_type>(_Epptr - _Oldptr); } - size_t _Newsize; + _Mysize_type _Newsize; if (_Oldsize < _MINSIZE) { _Newsize = _MINSIZE; } else if (_Oldsize < INT_MAX / 2) { // grow by 50 percent diff --git a/stl/inc/stacktrace b/stl/inc/stacktrace index 22a4eda8ba6..32ffc28b3cb 100644 --- a/stl/inc/stacktrace +++ b/stl/inc/stacktrace @@ -13,11 +13,14 @@ _EMIT_STL_WARNING(STL4038, "The contents of are available only with #else // ^^^ !_HAS_CXX23 / _HAS_CXX23 vvv #include -#include #include #include #include +#ifdef __cpp_lib_concepts +#include +#endif // __cpp_lib_concepts + #pragma pack(push, _CRT_PACKING) #pragma warning(push, _STL_WARNING_LEVEL) #pragma warning(disable : _STL_DISABLED_WARNINGS) @@ -353,7 +356,7 @@ ostream& operator<<(ostream& _Os, const basic_stacktrace<_Alloc>& _St) { template <> struct formatter { constexpr format_parse_context::iterator parse(format_parse_context& _Parse_ctx) { - return _Impl.parse(_Parse_ctx); + return _Impl._Parse(_Parse_ctx); } template diff --git a/stl/inc/string b/stl/inc/string index feded5cb836..2ba574013fc 100644 --- a/stl/inc/string +++ b/stl/inc/string @@ -437,38 +437,6 @@ _EXPORT_STD _NODISCARD inline long double stold(const wstring& _Str, size_t* _Id return _Ans; } -template -_NODISCARD _Elem* _UIntegral_to_buff(_Elem* _RNext, _UTy _UVal) { - // format _UVal into buffer *ending at* _RNext - static_assert(is_unsigned_v<_UTy>, "_UTy must be unsigned"); - -#ifdef _WIN64 - auto _UVal_trunc = _UVal; -#else // ^^^ defined(_WIN64) / !defined(_WIN64) vvv - - constexpr bool _Big_uty = sizeof(_UTy) > 4; - if constexpr (_Big_uty) { // For 64-bit numbers, work in chunks to avoid 64-bit divisions. - while (_UVal > 0xFFFFFFFFU) { - auto _UVal_chunk = static_cast(_UVal % 1000000000); - _UVal /= 1000000000; - - for (int _Idx = 0; _Idx != 9; ++_Idx) { - *--_RNext = static_cast<_Elem>('0' + _UVal_chunk % 10); - _UVal_chunk /= 10; - } - } - } - - auto _UVal_trunc = static_cast(_UVal); -#endif // ^^^ !defined(_WIN64) ^^^ - - do { - *--_RNext = static_cast<_Elem>('0' + _UVal_trunc % 10); - _UVal_trunc /= 10; - } while (_UVal_trunc != 0); - return _RNext; -} - template _NODISCARD basic_string<_Elem> _Integral_to_string(const _Ty _Val) { // convert _Val to string diff --git a/stl/inc/thread b/stl/inc/thread index 4260013770a..2d47227b132 100644 --- a/stl/inc/thread +++ b/stl/inc/thread @@ -7,10 +7,14 @@ #define _THREAD_ #include #if _STL_COMPILER_PREPROCESSOR + +#ifdef _M_CEE_PURE +#error is not supported when compiling with /clr:pure. +#endif // defined(_M_CEE_PURE) + #include <__msvc_chrono.hpp> #include #include -#include #include #include @@ -19,13 +23,9 @@ #include #endif // _HAS_CXX20 -#if _HAS_CXX23 +#if _HAS_CXX23 && defined(__cpp_lib_concepts) // TRANSITION, GH-395 #include -#endif // _HAS_CXX23 - -#ifdef _M_CEE_PURE -#error is not supported when compiling with /clr:pure. -#endif // defined(_M_CEE_PURE) +#endif // _HAS_CXX23 && defined(__cpp_lib_concepts) #pragma pack(push, _CRT_PACKING) #pragma warning(push, _STL_WARNING_LEVEL) @@ -297,7 +297,8 @@ basic_ostream<_Ch, _Tr>& operator<<(basic_ostream<_Ch, _Tr>& _Str, thread::id _I } #if _HAS_CXX23 && defined(__cpp_lib_concepts) -// Per LWG-3997, the _CharT template parameter is constrained to supported character types. +// Per LWG-3997, `_CharT` in library-provided `formatter` specializations is +// constrained to character types supported by `format`. template <_Format_supported_charT _CharT> struct formatter { private: @@ -305,7 +306,7 @@ private: public: constexpr _Pc::iterator parse(_Pc& _Parse_ctx) { - return _Impl.parse(_Parse_ctx); + return _Impl._Parse(_Parse_ctx); } template diff --git a/stl/inc/type_traits b/stl/inc/type_traits index bd5500e0830..2e67ff7b97e 100644 --- a/stl/inc/type_traits +++ b/stl/inc/type_traits @@ -2125,7 +2125,7 @@ _EXPORT_STD template && is_ #else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv template #endif // ^^^ !_HAS_CXX17 ^^^ -_CONSTEXPR20 void swap(_Ty&, _Ty&) noexcept(is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_assignable_v<_Ty>); +_CONSTEXPR20 void swap(_Ty&, _Ty&) noexcept(is_nothrow_move_constructible_v<_Ty> && is_nothrow_move_assignable_v<_Ty>); _EXPORT_STD template ::value, int> = 0> _CONSTEXPR20 void swap(_Ty (&)[_Size], _Ty (&)[_Size]) noexcept(_Is_nothrow_swappable<_Ty>::value); diff --git a/stl/inc/unordered_map b/stl/inc/unordered_map index 8aa0ffda0a6..ae1560c4e86 100644 --- a/stl/inc/unordered_map +++ b/stl/inc/unordered_map @@ -254,8 +254,9 @@ public: unordered_map(unordered_map&& _Right, const allocator_type& _Al) : _Mybase(_STD move(_Right), _Al) {} - unordered_map& operator=(unordered_map&& _Right) noexcept(_Alnode_traits::is_always_equal::value&& - is_nothrow_move_assignable_v<_Hasher>&& is_nothrow_move_assignable_v<_Keyeq>) { + unordered_map& operator=(unordered_map&& _Right) noexcept(_Alnode_traits::is_always_equal::value + && is_nothrow_move_assignable_v<_Hasher> + && is_nothrow_move_assignable_v<_Keyeq>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -532,7 +533,7 @@ void swap(unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Left, _EXPORT_STD template unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>::size_type erase_if( unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 @@ -741,8 +742,9 @@ public: unordered_multimap(unordered_multimap&& _Right, const allocator_type& _Al) : _Mybase(_STD move(_Right), _Al) {} - unordered_multimap& operator=(unordered_multimap&& _Right) noexcept(_Alnode_traits::is_always_equal::value&& - is_nothrow_move_assignable_v<_Hasher>&& is_nothrow_move_assignable_v<_Keyeq>) { + unordered_multimap& operator=(unordered_multimap&& _Right) noexcept(_Alnode_traits::is_always_equal::value + && is_nothrow_move_assignable_v<_Hasher> + && is_nothrow_move_assignable_v<_Keyeq>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -903,7 +905,7 @@ void swap(unordered_multimap<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Left, _EXPORT_STD template unordered_multimap<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>::size_type erase_if( unordered_multimap<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/unordered_set b/stl/inc/unordered_set index f99bbab9cfc..be7caa0b280 100644 --- a/stl/inc/unordered_set +++ b/stl/inc/unordered_set @@ -249,8 +249,9 @@ public: unordered_set(unordered_set&& _Right, const allocator_type& _Al) : _Mybase(_STD move(_Right), _Al) {} - unordered_set& operator=(unordered_set&& _Right) noexcept(_Alnode_traits::is_always_equal::value&& - is_nothrow_move_assignable_v<_Hasher>&& is_nothrow_move_assignable_v<_Keyeq>) { + unordered_set& operator=(unordered_set&& _Right) noexcept(_Alnode_traits::is_always_equal::value + && is_nothrow_move_assignable_v<_Hasher> + && is_nothrow_move_assignable_v<_Keyeq>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -387,7 +388,7 @@ void swap(unordered_set<_Kty, _Hasher, _Keyeq, _Alloc>& _Left, _EXPORT_STD template unordered_set<_Kty, _Hasher, _Keyeq, _Alloc>::size_type erase_if( unordered_set<_Kty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 @@ -590,8 +591,9 @@ public: } #endif // _HAS_CXX23 && defined(__cpp_lib_concepts) - unordered_multiset& operator=(unordered_multiset&& _Right) noexcept(_Alnode_traits::is_always_equal::value&& - is_nothrow_move_assignable_v<_Hasher>&& is_nothrow_move_assignable_v<_Keyeq>) { + unordered_multiset& operator=(unordered_multiset&& _Right) noexcept(_Alnode_traits::is_always_equal::value + && is_nothrow_move_assignable_v<_Hasher> + && is_nothrow_move_assignable_v<_Keyeq>) { _Mybase::operator=(_STD move(_Right)); return *this; } @@ -730,7 +732,7 @@ void swap(unordered_multiset<_Kty, _Hasher, _Keyeq, _Alloc>& _Left, _EXPORT_STD template unordered_multiset<_Kty, _Hasher, _Keyeq, _Alloc>::size_type erase_if( unordered_multiset<_Kty, _Hasher, _Keyeq, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_nodes_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_nodes_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/utility b/stl/inc/utility index 520ec24b4d4..74af5968727 100644 --- a/stl/inc/utility +++ b/stl/inc/utility @@ -125,7 +125,7 @@ _EXPORT_STD template && is_ template #endif // ^^^ !_HAS_CXX17 ^^^ _CONSTEXPR20 void swap(_Ty& _Left, _Ty& _Right) noexcept( - is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_assignable_v<_Ty>) { + is_nothrow_move_constructible_v<_Ty> && is_nothrow_move_assignable_v<_Ty>) { _Ty _Tmp = _STD move(_Left); _Left = _STD move(_Right); _Right = _STD move(_Tmp); @@ -228,14 +228,14 @@ struct pair { // store a pair of values constexpr explicit( !conjunction_v<_Is_implicitly_default_constructible<_Uty1>, _Is_implicitly_default_constructible<_Uty2>>) pair() noexcept( - is_nothrow_default_constructible_v<_Uty1>&& is_nothrow_default_constructible_v<_Uty2>) // strengthened + is_nothrow_default_constructible_v<_Uty1> && is_nothrow_default_constructible_v<_Uty2>) // strengthened : first(), second() {} template , is_copy_constructible<_Uty2>>, int> = 0> constexpr explicit(!conjunction_v, is_convertible>) pair(const _Ty1& _Val1, const _Ty2& _Val2) noexcept( - is_nothrow_copy_constructible_v<_Uty1>&& is_nothrow_copy_constructible_v<_Uty2>) // strengthened + is_nothrow_copy_constructible_v<_Uty1> && is_nothrow_copy_constructible_v<_Uty2>) // strengthened : first(_Val1), second(_Val2) {} #if _HAS_CXX23 @@ -246,7 +246,7 @@ struct pair { // store a pair of values enable_if_t, is_constructible<_Ty2, _Other2>>, int> = 0> constexpr explicit(!conjunction_v, is_convertible<_Other2, _Ty2>>) pair(_Other1&& _Val1, _Other2&& _Val2) noexcept( - is_nothrow_constructible_v<_Ty1, _Other1>&& is_nothrow_constructible_v<_Ty2, _Other2>) // strengthened + is_nothrow_constructible_v<_Ty1, _Other1> && is_nothrow_constructible_v<_Ty2, _Other2>) // strengthened : first(_STD forward<_Other1>(_Val1)), second(_STD forward<_Other2>(_Val2)) { } @@ -258,7 +258,7 @@ struct pair { // store a pair of values enable_if_t, is_constructible<_Ty2, _Other2&>>, int> = 0> constexpr explicit(!conjunction_v, is_convertible<_Other2&, _Ty2>>) pair(pair<_Other1, _Other2>& _Right) noexcept( - is_nothrow_constructible_v<_Ty1, _Other1&>&& is_nothrow_constructible_v<_Ty2, _Other2&>) // strengthened + is_nothrow_constructible_v<_Ty1, _Other1&> && is_nothrow_constructible_v<_Ty2, _Other2&>) // strengthened : first(_Right.first), second(_Right.second) {} #endif // _HAS_CXX23 @@ -266,15 +266,16 @@ struct pair { // store a pair of values enable_if_t, is_constructible<_Ty2, const _Other2&>>, int> = 0> constexpr explicit(!conjunction_v, is_convertible>) - pair(const pair<_Other1, _Other2>& _Right) noexcept(is_nothrow_constructible_v<_Ty1, const _Other1&>&& - is_nothrow_constructible_v<_Ty2, const _Other2&>) // strengthened + pair(const pair<_Other1, _Other2>& _Right) noexcept( + is_nothrow_constructible_v<_Ty1, const _Other1&> + && is_nothrow_constructible_v<_Ty2, const _Other2&>) // strengthened : first(_Right.first), second(_Right.second) {} template , is_constructible<_Ty2, _Other2>>, int> = 0> constexpr explicit(!conjunction_v, is_convertible<_Other2, _Ty2>>) pair(pair<_Other1, _Other2>&& _Right) noexcept( - is_nothrow_constructible_v<_Ty1, _Other1>&& is_nothrow_constructible_v<_Ty2, _Other2>) // strengthened + is_nothrow_constructible_v<_Ty1, _Other1> && is_nothrow_constructible_v<_Ty2, _Other2>) // strengthened : first(_STD forward<_Other1>(_Right.first)), second(_STD forward<_Other2>(_Right.second)) {} #if _HAS_CXX23 @@ -282,8 +283,9 @@ struct pair { // store a pair of values enable_if_t, is_constructible<_Ty2, const _Other2>>, int> = 0> constexpr explicit(!conjunction_v, is_convertible>) - pair(const pair<_Other1, _Other2>&& _Right) noexcept(is_nothrow_constructible_v<_Ty1, const _Other1>&& - is_nothrow_constructible_v<_Ty2, const _Other2>) // strengthened + pair(const pair<_Other1, _Other2>&& _Right) noexcept( + is_nothrow_constructible_v<_Ty1, const _Other1> + && is_nothrow_constructible_v<_Ty2, const _Other2>) // strengthened : first(_STD forward(_Right.first)), second(_STD forward(_Right.second)) {} #ifdef __cpp_lib_concepts @@ -297,8 +299,9 @@ struct pair { // store a pair of values #endif // ^^^ no workaround ^^^ constexpr explicit(!conjunction_v(_STD declval<_Other>())), _Ty1>, is_convertible(_STD declval<_Other>())), _Ty2>>) - pair(_Other&& _Right) noexcept(is_nothrow_constructible_v<_Ty1, decltype(_STD get<0>(_STD declval<_Other>()))>&& - is_nothrow_constructible_v<_Ty2, decltype(_STD get<1>(_STD declval<_Other>()))>) // strengthened + pair(_Other&& _Right) noexcept( + is_nothrow_constructible_v<_Ty1, decltype(_STD get<0>(_STD declval<_Other>()))> + && is_nothrow_constructible_v<_Ty2, decltype(_STD get<1>(_STD declval<_Other>()))>) // strengthened : first(_STD get<0>(_STD forward<_Other>(_Right))), second(_STD get<1>(_STD forward<_Other>(_Right))) { } #endif // defined(__cpp_lib_concepts) @@ -369,8 +372,8 @@ struct pair { // store a pair of values is_assignable<_Ty2&, const _Other2&>>, int> = 0> _CONSTEXPR20 pair& operator=(const pair<_Other1, _Other2>& _Right) noexcept( - is_nothrow_assignable_v<_Ty1&, const _Other1&>&& - is_nothrow_assignable_v<_Ty2&, const _Other2&>) /* strengthened */ { + is_nothrow_assignable_v<_Ty1&, const _Other1&> + && is_nothrow_assignable_v<_Ty2&, const _Other2&>) /* strengthened */ { first = _Right.first; second = _Right.second; return *this; @@ -382,8 +385,8 @@ struct pair { // store a pair of values is_assignable, is_assignable>, int> = 0> constexpr const pair& operator=(const pair<_Other1, _Other2>& _Right) const - noexcept(is_nothrow_assignable_v&& - is_nothrow_assignable_v) /* strengthened */ { + noexcept(is_nothrow_assignable_v + && is_nothrow_assignable_v) /* strengthened */ { first = _Right.first; second = _Right.second; return *this; @@ -395,7 +398,7 @@ struct pair { // store a pair of values is_assignable<_Ty2&, _Other2>>, int> = 0> _CONSTEXPR20 pair& operator=(pair<_Other1, _Other2>&& _Right) noexcept( - is_nothrow_assignable_v<_Ty1&, _Other1>&& is_nothrow_assignable_v<_Ty2&, _Other2>) /* strengthened */ { + is_nothrow_assignable_v<_Ty1&, _Other1> && is_nothrow_assignable_v<_Ty2&, _Other2>) /* strengthened */ { first = _STD forward<_Other1>(_Right.first); second = _STD forward<_Other2>(_Right.second); return *this; @@ -407,8 +410,8 @@ struct pair { // store a pair of values is_assignable>, int> = 0> constexpr const pair& operator=(pair<_Other1, _Other2>&& _Right) const - noexcept(is_nothrow_assignable_v&& - is_nothrow_assignable_v) /* strengthened */ { + noexcept(is_nothrow_assignable_v + && is_nothrow_assignable_v) /* strengthened */ { first = _STD forward<_Other1>(_Right.first); second = _STD forward<_Other2>(_Right.second); return *this; @@ -420,8 +423,8 @@ struct pair { // store a pair of values && is_assignable_v<_Ty1&, decltype(_STD get<0>(_STD declval<_Other>()))> && is_assignable_v<_Ty2&, decltype(_STD get<1>(_STD declval<_Other>()))> constexpr pair& operator=(_Other&& _Right) noexcept( - is_nothrow_assignable_v<_Ty1&, decltype(_STD get<0>(_STD declval<_Other>()))>&& - is_nothrow_assignable_v<_Ty2&, decltype(_STD get<1>(_STD declval<_Other>()))>) /* strengthened */ { + is_nothrow_assignable_v<_Ty1&, decltype(_STD get<0>(_STD declval<_Other>()))> + && is_nothrow_assignable_v<_Ty2&, decltype(_STD get<1>(_STD declval<_Other>()))>) /* strengthened */ { first = _STD get<0>(_STD forward<_Other>(_Right)); second = _STD get<1>(_STD forward<_Other>(_Right)); return *this; @@ -432,8 +435,8 @@ struct pair { // store a pair of values && is_assignable_v(_STD declval<_Other>()))> && is_assignable_v(_STD declval<_Other>()))> constexpr const pair& operator=(_Other&& _Right) const noexcept( - is_nothrow_assignable_v(_STD declval<_Other>()))>&& - is_nothrow_assignable_v(_STD declval<_Other>()))>) /* strengthened */ { + is_nothrow_assignable_v(_STD declval<_Other>()))> + && is_nothrow_assignable_v(_STD declval<_Other>()))>) /* strengthened */ { first = _STD get<0>(_STD forward<_Other>(_Right)); second = _STD get<1>(_STD forward<_Other>(_Right)); return *this; @@ -442,7 +445,7 @@ struct pair { // store a pair of values #endif // _HAS_CXX23 _CONSTEXPR20 void swap(pair& _Right) noexcept( - _Is_nothrow_swappable<_Ty1>::value&& _Is_nothrow_swappable<_Ty2>::value) { + _Is_nothrow_swappable<_Ty1>::value && _Is_nothrow_swappable<_Ty2>::value) { using _STD swap; if (this != _STD addressof(_Right)) { swap(first, _Right.first); // intentional ADL @@ -453,7 +456,7 @@ struct pair { // store a pair of values #if _HAS_CXX23 template // see GH-3013 constexpr void swap(const pair& _Right) const - noexcept(is_nothrow_swappable_v&& is_nothrow_swappable_v) { + noexcept(is_nothrow_swappable_v && is_nothrow_swappable_v) { using _STD swap; if (this != _STD addressof(_Right)) { swap(first, _Right.first); // intentional ADL @@ -563,8 +566,8 @@ using _Unrefwrap_t = typename _Unrefwrap_helper>::type; _EXPORT_STD template _NODISCARD constexpr pair<_Unrefwrap_t<_Ty1>, _Unrefwrap_t<_Ty2>> make_pair(_Ty1&& _Val1, _Ty2&& _Val2) noexcept( - is_nothrow_constructible_v<_Unrefwrap_t<_Ty1>, _Ty1>&& - is_nothrow_constructible_v<_Unrefwrap_t<_Ty2>, _Ty2>) /* strengthened */ { + is_nothrow_constructible_v<_Unrefwrap_t<_Ty1>, _Ty1> + && is_nothrow_constructible_v<_Unrefwrap_t<_Ty2>, _Ty2>) /* strengthened */ { // return pair composed from arguments using _Mypair = pair<_Unrefwrap_t<_Ty1>, _Unrefwrap_t<_Ty2>>; return _Mypair(_STD forward<_Ty1>(_Val1), _STD forward<_Ty2>(_Val2)); diff --git a/stl/inc/variant b/stl/inc/variant index 051de655b7e..071271d8682 100644 --- a/stl/inc/variant +++ b/stl/inc/variant @@ -1023,8 +1023,8 @@ public: && is_assignable_v<_Variant_init_type<_Ty, _Types...>&, _Ty>, int> = 0> _CONSTEXPR20 variant& operator=(_Ty&& _Obj) noexcept( - is_nothrow_assignable_v<_Variant_init_type<_Ty, _Types...>&, _Ty>&& - is_nothrow_constructible_v<_Variant_init_type<_Ty, _Types...>, _Ty>) { + is_nothrow_assignable_v<_Variant_init_type<_Ty, _Types...>&, _Ty> + && is_nothrow_constructible_v<_Variant_init_type<_Ty, _Types...>, _Ty>) { // assign/emplace the alternative chosen by overload resolution of _Obj with f(_Types)... constexpr size_t _TargetIdx = _Variant_init_index<_Ty, _Types...>::value; if (index() == _TargetIdx) { diff --git a/stl/inc/vector b/stl/inc/vector index 3f86a5258d9..c703d95aca2 100644 --- a/stl/inc/vector +++ b/stl/inc/vector @@ -15,6 +15,10 @@ #include #endif // _HAS_CXX17 +#if _HAS_CXX23 && defined(__cpp_lib_concepts) // TRANSITION, GH-395 +#include <__msvc_formatter.hpp> +#endif // _HAS_CXX23 && defined(__cpp_lib_concepts) + #pragma pack(push, _CRT_PACKING) #pragma warning(push, _STL_WARNING_LEVEL) #pragma warning(disable : _STL_DISABLED_WARNINGS) @@ -150,7 +154,7 @@ public: _NODISCARD _CONSTEXPR20 difference_type operator-(const _Vector_const_iterator& _Right) const noexcept { _Compat(_Right); - return _Ptr - _Right._Ptr; + return static_cast(_Ptr - _Right._Ptr); } _NODISCARD _CONSTEXPR20 reference operator[](const difference_type _Off) const noexcept { @@ -618,6 +622,9 @@ public: _Construct_n(_Count); } +#if _HAS_CXX17 + template ::value, int> = 0> +#endif // _HAS_CXX17 _CONSTEXPR20 vector(_CRT_GUARDOVERFLOW const size_type _Count, const _Ty& _Val, const _Alloc& _Al = _Alloc()) : _Mypair(_One_then_variadic_args_t{}, _Al) { _Construct_n(_Count, _Val); @@ -1851,20 +1858,20 @@ public: return rend(); } - _NODISCARD _CONSTEXPR20 pointer _Unchecked_begin() noexcept { - return _Mypair._Myval2._Myfirst; + _NODISCARD _CONSTEXPR20 _Ty* _Unchecked_begin() noexcept { + return _Unfancy_maybe_null(_Mypair._Myval2._Myfirst); } - _NODISCARD _CONSTEXPR20 const_pointer _Unchecked_begin() const noexcept { - return _Mypair._Myval2._Myfirst; + _NODISCARD _CONSTEXPR20 const _Ty* _Unchecked_begin() const noexcept { + return _Unfancy_maybe_null(_Mypair._Myval2._Myfirst); } - _NODISCARD _CONSTEXPR20 pointer _Unchecked_end() noexcept { - return _Mypair._Myval2._Mylast; + _NODISCARD _CONSTEXPR20 _Ty* _Unchecked_end() noexcept { + return _Unfancy_maybe_null(_Mypair._Myval2._Mylast); } - _NODISCARD _CONSTEXPR20 const_pointer _Unchecked_end() const noexcept { - return _Mypair._Myval2._Mylast; + _NODISCARD _CONSTEXPR20 const _Ty* _Unchecked_end() const noexcept { + return _Unfancy_maybe_null(_Mypair._Myval2._Mylast); } _NODISCARD_EMPTY_MEMBER _CONSTEXPR20 bool empty() const noexcept { @@ -2365,12 +2372,12 @@ _CONSTEXPR20 void swap(vector<_Ty, _Alloc>& _Left, vector<_Ty, _Alloc>& _Right) #if _HAS_CXX20 _EXPORT_STD template constexpr vector<_Ty, _Alloc>::size_type erase(vector<_Ty, _Alloc>& _Cont, const _Uty& _Val) { - return _Erase_remove(_Cont, _Val); + return _STD _Erase_remove(_Cont, _Val); } _EXPORT_STD template constexpr vector<_Ty, _Alloc>::size_type erase_if(vector<_Ty, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_remove_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_remove_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 @@ -3404,7 +3411,6 @@ public: _STL_VERIFY(end() > _Where, "vector erase iterator outside range"); _STD copy(_Next_iter(_Where), end(), _Where); _Orphan_range(static_cast(_Off), this->_Mysize); - #else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL < 2 vvv _STD copy(_Next_iter(_Where), end(), _Where); #endif // ^^^ _ITERATOR_DEBUG_LEVEL < 2 ^^^ @@ -3426,7 +3432,6 @@ public: const auto _Newsize = static_cast(_Next - begin()); _Orphan_range(_Newsize, this->_Mysize); _Trim(_Newsize); - #else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL < 2 vvv iterator _Next = _STD copy(_Last, end(), _First); _Trim(static_cast(_Next - begin())); @@ -3585,6 +3590,26 @@ namespace pmr { } // namespace pmr #endif // _HAS_CXX17 +#if _HAS_CXX23 && defined(__cpp_lib_concepts) // TRANSITION, GH-395 +template + requires _Is_specialization_v<_Ty, _Vb_reference> +struct formatter<_Ty, _CharT> { +private: + formatter _Underlying; + +public: + template + constexpr _ParseContext::iterator parse(_ParseContext& _Ctx) { + return _Underlying.parse(_Ctx); + } + + template + _FormatContext::iterator format(const _Ty& _Ref, _FormatContext& _Ctx) const { + return _Underlying.format(_Ref, _Ctx); + } +}; +#endif // _HAS_CXX23 && defined(__cpp_lib_concepts) + template _INLINE_VAR constexpr bool _Is_vb_iterator<_Vb_iterator<_Alloc>, _RequiresMutable> = true; diff --git a/stl/inc/xatomic.h b/stl/inc/xatomic.h index 8e9598e28e9..daf370b761b 100644 --- a/stl/inc/xatomic.h +++ b/stl/inc/xatomic.h @@ -23,7 +23,8 @@ _STL_DISABLE_CLANG_WARNINGS #define _CONCAT(x, y) _CONCATX(x, y) // Interlocked intrinsic mapping for _nf/_acq/_rel -#if defined(_M_CEE_PURE) || defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) +#if defined(_M_CEE_PURE) || (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) \ + || (defined(_M_X64) && !defined(_M_ARM64EC)) #define _INTRIN_RELAXED(x) x #define _INTRIN_ACQUIRE(x) x #define _INTRIN_RELEASE(x) x @@ -34,7 +35,7 @@ _STL_DISABLE_CLANG_WARNINGS #define _YIELD_PROCESSOR() _mm_pause() #endif // ^^^ !defined(_M_CEE_PURE) ^^^ -#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) +#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) #define _INTRIN_RELAXED(x) _CONCAT(x, _nf) #define _INTRIN_ACQUIRE(x) _CONCAT(x, _acq) #define _INTRIN_RELEASE(x) _CONCAT(x, _rel) @@ -43,7 +44,7 @@ _STL_DISABLE_CLANG_WARNINGS #define _INTRIN_ACQ_REL(x) x #define _YIELD_PROCESSOR() __yield() -#else // ^^^ ARM32/ARM64 / unsupported hardware vvv +#else // ^^^ ARM32/ARM64/ARM64EC/HYBRID_X86_ARM64 / unsupported hardware vvv #error Unsupported hardware #endif // hardware @@ -54,7 +55,7 @@ _STL_DISABLE_CLANG_WARNINGS // Also: if any macros are added they should be #undefed in vcruntime as well. #define _Compiler_barrier() _STL_DISABLE_DEPRECATED_WARNING _ReadWriteBarrier() _STL_RESTORE_DEPRECATED_WARNING -#if defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) +#if defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) #define _Memory_barrier() __dmb(0xB) // inner shared data memory barrier #define _Compiler_or_memory_barrier() _Memory_barrier() #elif defined(_M_IX86) || defined(_M_X64) diff --git a/stl/inc/xbit_ops.h b/stl/inc/xbit_ops.h index f80c8214f38..3822e0168f8 100644 --- a/stl/inc/xbit_ops.h +++ b/stl/inc/xbit_ops.h @@ -35,7 +35,6 @@ _NODISCARD inline unsigned long _Floor_of_log_2(size_t _Value) noexcept { // ret while ((size_t{1} << _Result) > _Value) { --_Result; } - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv #ifdef _WIN64 _BitScanReverse64(&_Result, _Value); // lgtm [cpp/conditionallyuninitializedvariable] diff --git a/stl/inc/xcharconv_ryu.h b/stl/inc/xcharconv_ryu.h index 343a09226b7..0e97cb1231b 100644 --- a/stl/inc/xcharconv_ryu.h +++ b/stl/inc/xcharconv_ryu.h @@ -48,14 +48,18 @@ #include #include -#if defined(_M_X64) && !defined(_M_ARM64EC) +#if defined(_M_X64) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) #define _HAS_CHARCONV_INTRINSICS 1 #else // ^^^ intrinsics available / intrinsics unavailable vvv #define _HAS_CHARCONV_INTRINSICS 0 #endif // ^^^ intrinsics unavailable ^^^ #if _HAS_CHARCONV_INTRINSICS -#include _STL_INTRIN_HEADER // for _umul128() and __shiftright128() +#if defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) +#include // TRANSITION, VSO-1918426 +#else // ^^^ defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) / defined(_M_X64) vvv +#include _STL_INTRIN_HEADER // for _umul128(), __umulh(), and __shiftright128() +#endif // ^^^ defined(_M_X64) ^^^ #endif // ^^^ intrinsics available ^^^ #pragma pack(push, _CRT_PACKING) @@ -145,19 +149,12 @@ inline constexpr int __DOUBLE_POW5_BITCOUNT = 121; #if _HAS_CHARCONV_INTRINSICS _NODISCARD inline uint64_t __ryu_umul128(const uint64_t __a, const uint64_t __b, uint64_t* const __productHi) { +#if defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) + *__productHi = __umulh(__a, __b); + return __a * __b; +#else // ^^^ not native X64 / native X64 vvv return _umul128(__a, __b, __productHi); -} - -_NODISCARD inline uint64_t __ryu_shiftright128(const uint64_t __lo, const uint64_t __hi, const uint32_t __dist) { - // For the __shiftright128 intrinsic, the shift value is always - // modulo 64. - // In the current implementation of the double-precision version - // of Ryu, the shift value is always < 64. - // (The shift value is in the range [49, 58].) - // Check this here in case a future change requires larger shift - // values. In this case this function needs to be adjusted. - _STL_INTERNAL_CHECK(__dist < 64); - return __shiftright128(__lo, __hi, static_cast(__dist)); +#endif // defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_HYBRID_X86_ARM64) } #else // ^^^ intrinsics available / intrinsics unavailable vvv @@ -193,20 +190,33 @@ _NODISCARD __forceinline uint64_t __ryu_umul128(const uint64_t __a, const uint64 return __pLo; } +#endif // ^^^ intrinsics unavailable ^^^ + _NODISCARD inline uint64_t __ryu_shiftright128(const uint64_t __lo, const uint64_t __hi, const uint32_t __dist) { +#if defined(_M_X64) && !defined(_M_ARM64EC) + // For the __shiftright128 intrinsic, the shift value is always + // modulo 64. + // In the current implementation of the double-precision version + // of Ryu, the shift value is always < 64. + // (The shift value is in the range [49, 58].) + // Check this here in case a future change requires larger shift + // values. In this case this function needs to be adjusted. + _STL_INTERNAL_CHECK(__dist < 64); + return __shiftright128(__lo, __hi, static_cast(__dist)); +#else // ^^^ defined(_M_X64) && !defined(_M_ARM64EC) / !defined(_M_X64) || defined(_M_ARM64EC) vvv // We don't need to handle the case __dist >= 64 here (see above). _STL_INTERNAL_CHECK(__dist < 64); -#ifdef _WIN64 +#if defined(_WIN64) || defined(_M_HYBRID_X86_ARM64) _STL_INTERNAL_CHECK(__dist > 0); return (__hi << (64 - __dist)) | (__lo >> __dist); -#else // ^^^ 64-bit / 32-bit vvv +#else // ^^^ 64-bit or _M_HYBRID_X86_ARM64 / 32-bit vvv // Avoid a 64-bit shift by taking advantage of the range of shift values. _STL_INTERNAL_CHECK(__dist >= 32); return (__hi << (64 - __dist)) | (static_cast(__lo >> 32) >> (__dist - 32)); #endif // ^^^ 32-bit ^^^ +#endif // defined(_M_X64) && !defined(_M_ARM64EC) } -#endif // ^^^ intrinsics unavailable ^^^ #ifndef _WIN64 diff --git a/stl/inc/xhash b/stl/inc/xhash index a5dabda7b4b..5a1fe9a406b 100644 --- a/stl/inc/xhash +++ b/stl/inc/xhash @@ -1286,7 +1286,7 @@ private: template _NODISCARD _Equal_range_result _Equal_range(const _Keyty& _Keyval, const size_t _Hashval) const - noexcept(_Nothrow_compare<_Traits, key_type, _Keyty>&& _Nothrow_compare<_Traits, _Keyty, key_type>) { + noexcept(_Nothrow_compare<_Traits, key_type, _Keyty> && _Nothrow_compare<_Traits, _Keyty, key_type>) { const size_type _Bucket = _Hashval & _Mask; _Unchecked_const_iterator _Where = _Vec._Mypair._Myval2._Myfirst[_Bucket << 1]; const _Unchecked_const_iterator _End = _Unchecked_end(); diff --git a/stl/inc/xlocale b/stl/inc/xlocale index 0f3738223c6..d7c38253668 100644 --- a/stl/inc/xlocale +++ b/stl/inc/xlocale @@ -226,7 +226,7 @@ public: _Newimp->_Addfac(_Facptr, _Facet::id); _Newimp->_Catmask = none; _Newimp->_Name = "*"; - return locale{_Newimp}; + return locale{_Secret_locale_construct_tag{}, _Newimp}; } template @@ -391,7 +391,11 @@ public: static _MRTIMP2_PURE locale __CLRCALL_PURE_OR_CDECL empty(); // empty (transparent) locale private: - locale(_Locimp* _Ptrimp) : _Ptr(_Ptrimp) {} + struct _Secret_locale_construct_tag { + explicit _Secret_locale_construct_tag() = default; + }; + + explicit locale(_Secret_locale_construct_tag, _Locimp* _Ptrimp) : _Ptr(_Ptrimp) {} static _MRTIMP2_PURE _Locimp* __CLRCALL_PURE_OR_CDECL _Init(bool _Do_incref = false); // initialize locale static _MRTIMP2_PURE _Locimp* __CLRCALL_PURE_OR_CDECL _Getgloballocale(); diff --git a/stl/inc/xlocinfo b/stl/inc/xlocinfo index 9a7ef40a1ed..80487ea2f33 100644 --- a/stl/inc/xlocinfo +++ b/stl/inc/xlocinfo @@ -52,7 +52,6 @@ _CRTIMP2_PURE int __CLRCALL_PURE_OR_CDECL _Getdateorder() noexcept; [System::Runtime::InteropServices::DllImport(_CRT_MSVCP_CURRENT, EntryPoint = "_Mbrtowc", CallingConvention = System::Runtime::InteropServices::CallingConvention::Cdecl)] extern "C" int _Mbrtowc(_Out_opt_ wchar_t*, const char*, size_t, mbstate_t*, const _Cvtvec*) noexcept; - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv _MRTIMP2 _Success_(return >= 0) int __cdecl _Mbrtowc(_When_(_Max_multibyte != 0, _Out_) wchar_t*, const char*, size_t _Max_multibyte, mbstate_t*, const _Cvtvec*) noexcept; diff --git a/stl/inc/xlocnum b/stl/inc/xlocnum index afe27df46d2..cb0ddec7575 100644 --- a/stl/inc/xlocnum +++ b/stl/inc/xlocnum @@ -1371,10 +1371,13 @@ protected: } _Buf.resize(_Bufsize + 50); // add fudge factor + const bool _Is_finite = (_STD isfinite)(_Val); + const auto _Adjusted_flags = // TRANSITION, DevCom-10519861 + _Is_finite ? _Iosbase.flags() : _Iosbase.flags() & ~ios_base::showpoint; const auto _Ngen = static_cast(_CSTD sprintf_s( - &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 0, _Iosbase.flags()), static_cast(_Precision), _Val)); + &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 0, _Adjusted_flags), static_cast(_Precision), _Val)); - return _Fput_v3(_Dest, _Iosbase, _Fill, _Buf.c_str(), _Ngen, (_STD isfinite)(_Val)); + return _Fput_v3(_Dest, _Iosbase, _Fill, _Buf.c_str(), _Ngen, _Is_finite); } virtual _OutIt __CLR_OR_THIS_CALL do_put( @@ -1395,10 +1398,13 @@ protected: } _Buf.resize(_Bufsize + 50); // add fudge factor + const bool _Is_finite = (_STD isfinite)(_Val); + const auto _Adjusted_flags = // TRANSITION, DevCom-10519861 + _Is_finite ? _Iosbase.flags() : _Iosbase.flags() & ~ios_base::showpoint; const auto _Ngen = static_cast(_CSTD sprintf_s( - &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 'L', _Iosbase.flags()), static_cast(_Precision), _Val)); + &_Buf[0], _Buf.size(), _Ffmt(_Fmt, 'L', _Adjusted_flags), static_cast(_Precision), _Val)); - return _Fput_v3(_Dest, _Iosbase, _Fill, _Buf.c_str(), _Ngen, (_STD isfinite)(_Val)); + return _Fput_v3(_Dest, _Iosbase, _Fill, _Buf.c_str(), _Ngen, _Is_finite); } #pragma warning(pop) diff --git a/stl/inc/xmemory b/stl/inc/xmemory index 16525adce1f..3235bd5702f 100644 --- a/stl/inc/xmemory +++ b/stl/inc/xmemory @@ -127,7 +127,7 @@ _STL_INTERNAL_STATIC_ASSERT(_Is_pow_2(_Big_allocation_alignment)); #ifdef _DEBUG _INLINE_VAR constexpr size_t _Non_user_size = 2 * sizeof(void*) + _Big_allocation_alignment - 1; #else // ^^^ defined(_DEBUG) / !defined(_DEBUG) vvv -_INLINE_VAR constexpr size_t _Non_user_size = sizeof(void*) + _Big_allocation_alignment - 1; +_INLINE_VAR constexpr size_t _Non_user_size = sizeof(void*) + _Big_allocation_alignment - 1; #endif // ^^^ !defined(_DEBUG) ^^^ #ifdef _WIN64 @@ -2215,9 +2215,9 @@ _NODISCARD_RAW_PTR_ALLOC _CONSTEXPR20 typename allocator_traits<_Alloc>::pointer _EXPORT_STD template _NODISCARD_REMOVE_ALG _CONSTEXPR20 _FwdIt remove(_FwdIt _First, const _FwdIt _Last, const _Ty& _Val) { // remove each matching _Val - _Adl_verify_range(_First, _Last); - auto _UFirst = _Get_unwrapped(_First); - const auto _ULast = _Get_unwrapped(_Last); + _STD _Adl_verify_range(_First, _Last); + auto _UFirst = _STD _Get_unwrapped(_First); + const auto _ULast = _STD _Get_unwrapped(_Last); _UFirst = _STD _Find_unchecked(_UFirst, _ULast, _Val); auto _UNext = _UFirst; if (_UFirst != _ULast) { @@ -2229,17 +2229,17 @@ _NODISCARD_REMOVE_ALG _CONSTEXPR20 _FwdIt remove(_FwdIt _First, const _FwdIt _La } } - _Seek_wrapped(_First, _UNext); + _STD _Seek_wrapped(_First, _UNext); return _First; } _EXPORT_STD template _NODISCARD_REMOVE_ALG _CONSTEXPR20 _FwdIt remove_if(_FwdIt _First, const _FwdIt _Last, _Pr _Pred) { // remove each satisfying _Pred - _Adl_verify_range(_First, _Last); - auto _UFirst = _Get_unwrapped(_First); - const auto _ULast = _Get_unwrapped(_Last); - _UFirst = _STD find_if(_UFirst, _ULast, _Pass_fn(_Pred)); + _STD _Adl_verify_range(_First, _Last); + auto _UFirst = _STD _Get_unwrapped(_First); + const auto _ULast = _STD _Get_unwrapped(_Last); + _UFirst = _STD find_if(_UFirst, _ULast, _STD _Pass_fn(_Pred)); auto _UNext = _UFirst; if (_UFirst != _ULast) { while (++_UFirst != _ULast) { @@ -2250,7 +2250,7 @@ _NODISCARD_REMOVE_ALG _CONSTEXPR20 _FwdIt remove_if(_FwdIt _First, const _FwdIt } } - _Seek_wrapped(_First, _UNext); + _STD _Seek_wrapped(_First, _UNext); return _First; } @@ -2260,7 +2260,7 @@ _CONSTEXPR20 typename _Container::size_type _Erase_remove(_Container& _Cont, con auto _First = _Cont.begin(); const auto _Last = _Cont.end(); const auto _Old_size = _Cont.size(); - _Seek_wrapped(_First, _STD remove(_Get_unwrapped(_First), _Get_unwrapped(_Last), _Val)); + _STD _Seek_wrapped(_First, _STD remove(_STD _Get_unwrapped(_First), _STD _Get_unwrapped(_Last), _Val)); _Cont.erase(_First, _Last); return _Old_size - _Cont.size(); } @@ -2271,7 +2271,7 @@ _CONSTEXPR20 typename _Container::size_type _Erase_remove_if(_Container& _Cont, auto _First = _Cont.begin(); const auto _Last = _Cont.end(); const auto _Old_size = _Cont.size(); - _Seek_wrapped(_First, _STD remove_if(_Get_unwrapped(_First), _Get_unwrapped(_Last), _Pred)); + _STD _Seek_wrapped(_First, _STD remove_if(_STD _Get_unwrapped(_First), _STD _Get_unwrapped(_Last), _Pred)); _Cont.erase(_First, _Last); return _Old_size - _Cont.size(); } @@ -2614,6 +2614,38 @@ struct _Is_transparent : bool_constant<_Is_transparent_v<_Ty>> {}; template concept _Transparent = _Is_transparent_v<_Ty>; #endif // defined(__cpp_lib_concepts) + +template +_NODISCARD _Elem* _UIntegral_to_buff(_Elem* _RNext, _UTy _UVal) { // used by both to_string and thread::id output + // format _UVal into buffer *ending at* _RNext + static_assert(is_unsigned_v<_UTy>, "_UTy must be unsigned"); + +#ifdef _WIN64 + auto _UVal_trunc = _UVal; +#else // ^^^ defined(_WIN64) / !defined(_WIN64) vvv + + constexpr bool _Big_uty = sizeof(_UTy) > 4; + if constexpr (_Big_uty) { // For 64-bit numbers, work in chunks to avoid 64-bit divisions. + while (_UVal > 0xFFFFFFFFU) { + auto _UVal_chunk = static_cast(_UVal % 1000000000); + _UVal /= 1000000000; + + for (int _Idx = 0; _Idx != 9; ++_Idx) { + *--_RNext = static_cast<_Elem>('0' + _UVal_chunk % 10); + _UVal_chunk /= 10; + } + } + } + + auto _UVal_trunc = static_cast(_UVal); +#endif // ^^^ !defined(_WIN64) ^^^ + + do { + *--_RNext = static_cast<_Elem>('0' + _UVal_trunc % 10); + _UVal_trunc /= 10; + } while (_UVal_trunc != 0); + return _RNext; +} _STD_END #pragma pop_macro("new") diff --git a/stl/inc/xstring b/stl/inc/xstring index 940bac90683..6bc2b3d35c3 100644 --- a/stl/inc/xstring +++ b/stl/inc/xstring @@ -1969,7 +1969,7 @@ public: _NODISCARD _CONSTEXPR20 difference_type operator-(const _String_const_iterator& _Right) const noexcept { _Compat(_Right); - return _Ptr - _Right._Ptr; + return static_cast(_Ptr - _Right._Ptr); } _NODISCARD _CONSTEXPR20 reference operator[](const difference_type _Off) const noexcept { @@ -2547,6 +2547,9 @@ public: _Construct<_Construct_strategy::_From_ptr>(_Ptr, _Count); } +#if _HAS_CXX17 + template ::value, int> = 0> +#endif // _HAS_CXX17 _CONSTEXPR20 basic_string( _In_reads_(_Count) const _Elem* const _Ptr, _CRT_GUARDOVERFLOW const size_type _Count, const _Alloc& _Al) : _Mypair(_One_then_variadic_args_t{}, _Al) { @@ -5260,13 +5263,13 @@ inline namespace literals { _EXPORT_STD template constexpr basic_string<_Elem, _Traits, _Alloc>::size_type erase( basic_string<_Elem, _Traits, _Alloc>& _Cont, const _Uty& _Val) { - return _Erase_remove(_Cont, _Val); + return _STD _Erase_remove(_Cont, _Val); } _EXPORT_STD template constexpr basic_string<_Elem, _Traits, _Alloc>::size_type erase_if( basic_string<_Elem, _Traits, _Alloc>& _Cont, _Pr _Pred) { - return _Erase_remove_if(_Cont, _Pass_fn(_Pred)); + return _STD _Erase_remove_if(_Cont, _STD _Pass_fn(_Pred)); } #endif // _HAS_CXX20 diff --git a/stl/inc/xtree b/stl/inc/xtree index d03a13d1d4e..099401a97dd 100644 --- a/stl/inc/xtree +++ b/stl/inc/xtree @@ -1682,7 +1682,7 @@ protected: template pair<_Nodeptr, _Nodeptr> _Eqrange(const _Other& _Keyval) const - noexcept(_Nothrow_compare&& _Nothrow_compare) { + noexcept(_Nothrow_compare && _Nothrow_compare) { // find range of nodes equivalent to _Keyval const auto _Scary = _Get_scary(); const auto& _Comp = _Getcomp(); diff --git a/stl/inc/xutility b/stl/inc/xutility index 2f276896073..d73982ea0d1 100644 --- a/stl/inc/xutility +++ b/stl/inc/xutility @@ -159,13 +159,13 @@ _Ty* __std_min_element(_Ty* _First, _Ty* _Last) noexcept { constexpr bool _Signed = _STD is_signed_v<_Ty>; if constexpr (sizeof(_Ty) == 1) { - return const_cast<_Ty*>(static_cast(__std_min_element_1(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_min_element_1(_First, _Last, _Signed))); } else if constexpr (sizeof(_Ty) == 2) { - return const_cast<_Ty*>(static_cast(__std_min_element_2(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_min_element_2(_First, _Last, _Signed))); } else if constexpr (sizeof(_Ty) == 4) { - return const_cast<_Ty*>(static_cast(__std_min_element_4(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_min_element_4(_First, _Last, _Signed))); } else if constexpr (sizeof(_Ty) == 8) { - return const_cast<_Ty*>(static_cast(__std_min_element_8(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_min_element_8(_First, _Last, _Signed))); } else { static_assert(_STD _Always_false<_Ty>, "Unexpected size"); } @@ -176,13 +176,13 @@ _Ty* __std_max_element(_Ty* _First, _Ty* _Last) noexcept { constexpr bool _Signed = _STD is_signed_v<_Ty>; if constexpr (sizeof(_Ty) == 1) { - return const_cast<_Ty*>(static_cast(__std_max_element_1(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_max_element_1(_First, _Last, _Signed))); } else if constexpr (sizeof(_Ty) == 2) { - return const_cast<_Ty*>(static_cast(__std_max_element_2(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_max_element_2(_First, _Last, _Signed))); } else if constexpr (sizeof(_Ty) == 4) { - return const_cast<_Ty*>(static_cast(__std_max_element_4(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_max_element_4(_First, _Last, _Signed))); } else if constexpr (sizeof(_Ty) == 8) { - return const_cast<_Ty*>(static_cast(__std_max_element_8(_First, _Last, _Signed))); + return const_cast<_Ty*>(static_cast(::__std_max_element_8(_First, _Last, _Signed))); } else { static_assert(_STD _Always_false<_Ty>, "Unexpected size"); } @@ -646,7 +646,7 @@ namespace ranges { public: template requires (_Choice<_Ty>._Strategy != _St::_None) - _NODISCARD constexpr decltype(auto) operator()(_Ty&& _Val) const noexcept(_Choice<_Ty>._No_throw) { + _NODISCARD constexpr decltype(auto) operator()(_Ty && _Val) const noexcept(_Choice<_Ty>._No_throw) { constexpr _St _Strat = _Choice<_Ty>._Strategy; if constexpr (_Strat == _St::_Custom) { @@ -941,17 +941,17 @@ namespace ranges { && requires(_Ty1&& __t1, _Ty2&& __t2) { iter_swap(static_cast<_Ty1&&>(__t1), static_cast<_Ty2&&>(__t2)); // intentional ADL }; + // clang-format on template - concept _Can_swap_references = indirectly_readable> - && indirectly_readable> + concept _Can_swap_references = + indirectly_readable> && indirectly_readable> && swappable_with, iter_reference_t<_Ty2>>; template concept _Symmetric_indirectly_movable_storable = - indirectly_movable_storable, remove_reference_t<_Ty2>> + indirectly_movable_storable, remove_reference_t<_Ty2>> && indirectly_movable_storable, remove_reference_t<_Ty1>>; - // clang-format on template _NODISCARD constexpr iter_value_t> _Iter_exchange_move(_Xty&& _XVal, @@ -1366,10 +1366,10 @@ using _Unwrap_enum_t = typename _Unwrap_enum<_Elem>::type; #define _DEBUG_ORDER_SET_UNWRAPPED(otherIter, first, last, pred) #else // ^^^ _ITERATOR_DEBUG_LEVEL < 2 / _ITERATOR_DEBUG_LEVEL == 2 vvv -#define _DEBUG_LT_PRED(pred, x, y) _Debug_lt_pred(pred, x, y) -#define _DEBUG_ORDER_UNWRAPPED(first, last, pred) _Debug_order_unchecked(first, last, pred) +#define _DEBUG_LT_PRED(pred, x, y) _STD _Debug_lt_pred(pred, x, y) +#define _DEBUG_ORDER_UNWRAPPED(first, last, pred) _STD _Debug_order_unchecked(first, last, pred) #define _DEBUG_ORDER_SET_UNWRAPPED(otherIter, first, last, pred) \ - _Debug_order_set_unchecked(first, last, pred) + _STD _Debug_order_set_unchecked(first, last, pred) template , _Remove_cvref_t<_Ty2>>, int> = 0> @@ -1407,7 +1407,7 @@ template constexpr void _Debug_order_set_unchecked(_InIt _First, _InIt _Last, _Pr&& _Pred) { // test if range is ordered by predicate if constexpr (is_same_v<_Iter_value_t<_OtherIt>, _Iter_value_t<_InIt>>) { - _Debug_order_unchecked(_First, _Last, _Pred); + _STD _Debug_order_unchecked(_First, _Last, _Pred); } } #endif // ^^^ _ITERATOR_DEBUG_LEVEL == 2 ^^^ @@ -1464,7 +1464,8 @@ constexpr _InIt _Next_iter(_InIt _First) { // increment iterator } _EXPORT_STD template -_NODISCARD _CONSTEXPR17 _InIt next(_InIt _First, _Iter_diff_t<_InIt> _Off = 1) { // increment iterator +_NODISCARD _CONSTEXPR17 _InIt next( + _InIt _First, typename iterator_traits<_InIt>::difference_type _Off = 1) { // increment iterator static_assert(_Is_ranges_input_iter_v<_InIt>, "next requires input iterator"); _STD advance(_First, _Off); @@ -1477,7 +1478,8 @@ constexpr _BidIt _Prev_iter(_BidIt _First) { // decrement iterator } _EXPORT_STD template -_NODISCARD _CONSTEXPR17 _BidIt prev(_BidIt _First, _Iter_diff_t<_BidIt> _Off = 1) { // decrement iterator +_NODISCARD _CONSTEXPR17 _BidIt prev( + _BidIt _First, typename iterator_traits<_BidIt>::difference_type _Off = 1) { // decrement iterator static_assert(_Is_ranges_bidi_iter_v<_BidIt>, "prev requires bidirectional iterator"); _STD advance(_First, -_Off); @@ -1542,14 +1544,15 @@ public: return current; } - _NODISCARD _CONSTEXPR17 reference operator*() const - noexcept(is_nothrow_copy_constructible_v<_BidIt>&& noexcept(*--(_STD declval<_BidIt&>()))) /* strengthened */ { + _NODISCARD _CONSTEXPR17 reference operator*() const noexcept(is_nothrow_copy_constructible_v<_BidIt> // + && noexcept(*--(_STD declval<_BidIt&>()))) /* strengthened */ { _BidIt _Tmp = current; return *--_Tmp; } _NODISCARD _CONSTEXPR17 pointer operator->() const - noexcept(is_nothrow_copy_constructible_v<_BidIt>&& noexcept(--(_STD declval<_BidIt&>())) + noexcept(is_nothrow_copy_constructible_v<_BidIt> // + && noexcept(--(_STD declval<_BidIt&>())) && _Has_nothrow_operator_arrow<_BidIt&, pointer>) /* strengthened */ #ifdef __cpp_lib_concepts requires (is_pointer_v<_BidIt> || requires(const _BidIt __i) { __i.operator->(); }) @@ -1569,8 +1572,8 @@ public: return *this; } - _CONSTEXPR17 reverse_iterator operator++(int) noexcept( - is_nothrow_copy_constructible_v<_BidIt>&& noexcept(--current)) /* strengthened */ { + _CONSTEXPR17 reverse_iterator operator++(int) noexcept(is_nothrow_copy_constructible_v<_BidIt> // + && noexcept(--current)) /* strengthened */ { reverse_iterator _Tmp = *this; --current; return _Tmp; @@ -1581,8 +1584,8 @@ public: return *this; } - _CONSTEXPR17 reverse_iterator operator--(int) noexcept( - is_nothrow_copy_constructible_v<_BidIt>&& noexcept(++current)) /* strengthened */ { + _CONSTEXPR17 reverse_iterator operator--(int) noexcept(is_nothrow_copy_constructible_v<_BidIt> // + && noexcept(++current)) /* strengthened */ { reverse_iterator _Tmp = *this; ++current; return _Tmp; @@ -1617,7 +1620,8 @@ public: #ifdef __cpp_lib_concepts _NODISCARD_FRIEND constexpr iter_rvalue_reference_t<_BidIt> iter_move(const reverse_iterator& _It) noexcept( - is_nothrow_copy_constructible_v<_BidIt>&& noexcept(_RANGES iter_move(--_STD declval<_BidIt&>()))) { + is_nothrow_copy_constructible_v<_BidIt> // + && noexcept(_RANGES iter_move(--_STD declval<_BidIt&>()))) { auto _Tmp = _It.current; --_Tmp; return _RANGES iter_move(_Tmp); @@ -1625,8 +1629,9 @@ public: template _BidIt2> friend constexpr void iter_swap(const reverse_iterator& _Left, const reverse_iterator<_BidIt2>& _Right) noexcept( - is_nothrow_copy_constructible_v<_BidIt>&& is_nothrow_copy_constructible_v<_BidIt2>&& noexcept( - _RANGES iter_swap(--_STD declval<_BidIt&>(), --_STD declval<_BidIt2&>()))) { + is_nothrow_copy_constructible_v<_BidIt> + && is_nothrow_copy_constructible_v<_BidIt2> // + && noexcept(_RANGES iter_swap(--_STD declval<_BidIt&>(), --_STD declval<_BidIt2&>()))) { auto _LTmp = _Left.current; auto _RTmp = _Right.base(); --_LTmp; @@ -3353,7 +3358,7 @@ namespace ranges { class _Ssize_fn { public: template - _NODISCARD constexpr auto operator()(_Rng&& _Range) const + _NODISCARD constexpr auto operator()(_Rng&& _Range) const noexcept(noexcept(_RANGES size(_Range))) requires requires { _RANGES size(_Range); } { using _Sty = _Make_signed_like_t; @@ -4052,8 +4057,8 @@ public: return *this; } - _CONSTEXPR17 auto operator++(int) noexcept( - is_nothrow_copy_constructible_v<_Iter>&& noexcept(++_Current)) /* strengthened */ { + _CONSTEXPR17 auto operator++(int) noexcept(is_nothrow_copy_constructible_v<_Iter> // + && noexcept(++_Current)) /* strengthened */ { #ifdef __cpp_lib_concepts if constexpr (forward_iterator<_Iter>) { #endif // defined(__cpp_lib_concepts) @@ -4072,8 +4077,8 @@ public: return *this; } - _CONSTEXPR17 move_iterator operator--(int) noexcept( - is_nothrow_copy_constructible_v<_Iter>&& noexcept(--_Current)) /* strengthened */ { + _CONSTEXPR17 move_iterator operator--(int) noexcept(is_nothrow_copy_constructible_v<_Iter> // + && noexcept(--_Current)) /* strengthened */ { move_iterator _Tmp = *this; --_Current; return _Tmp; @@ -5137,7 +5142,7 @@ _INLINE_VAR constexpr bool _Is_pointer_address_comparable = #pragma warning(push) #pragma warning(disable : 4806) // no value of type 'bool' promoted to type 'char' can equal the given constant template && is_integral_v<_Elem2>> + bool = sizeof(_Elem1) == sizeof(_Elem2) && is_integral_v<_Elem1> && is_integral_v<_Elem2>> _INLINE_VAR constexpr bool _Can_memcmp_elements = is_same_v<_Elem1, bool> || is_same_v<_Elem2, bool> || static_cast<_Elem1>(-1) == static_cast<_Elem2>(-1); #pragma warning(pop) @@ -5369,7 +5374,6 @@ namespace ranges { requires indirectly_comparable<_It1, _It2, _Pr, _Pj1, _Pj2> _NODISCARD constexpr mismatch_result<_It1, _It2> _Mismatch_4( _It1 _First1, _Se1 _Last1, _It2 _First2, _Se2 _Last2, _Pr _Pred, _Pj1 _Proj1, _Pj2 _Proj2) { - for (; _First1 != _Last1 && _First2 != _Last2; ++_First1, (void) ++_First2) { if (!_STD invoke(_Pred, _STD invoke(_Proj1, *_First1), _STD invoke(_Proj2, *_First2))) { break; @@ -5511,12 +5515,12 @@ _EXPORT_STD template _NODISCARD _CONSTEXPR20 bool lexicographical_compare( const _InIt1 _First1, const _InIt1 _Last1, const _InIt2 _First2, const _InIt2 _Last2, _Pr _Pred) { // order [_First1, _Last1) vs. [_First2, _Last2) - _Adl_verify_range(_First1, _Last1); - _Adl_verify_range(_First2, _Last2); - auto _UFirst1 = _Get_unwrapped(_First1); - const auto _ULast1 = _Get_unwrapped(_Last1); - auto _UFirst2 = _Get_unwrapped(_First2); - const auto _ULast2 = _Get_unwrapped(_Last2); + _STD _Adl_verify_range(_First1, _Last1); + _STD _Adl_verify_range(_First2, _Last2); + auto _UFirst1 = _STD _Get_unwrapped(_First1); + const auto _ULast1 = _STD _Get_unwrapped(_Last1); + auto _UFirst2 = _STD _Get_unwrapped(_First2); + const auto _ULast2 = _STD _Get_unwrapped(_Last2); using _Memcmp_pred = _Lex_compare_memcmp_classify; if constexpr (!is_void_v<_Memcmp_pred>) { @@ -5526,7 +5530,7 @@ _NODISCARD _CONSTEXPR20 bool lexicographical_compare( { const auto _Num1 = static_cast(_ULast1 - _UFirst1); const auto _Num2 = static_cast(_ULast2 - _UFirst2); - const int _Ans = _Memcmp_count(_UFirst1, _UFirst2, (_STD min)(_Num1, _Num2)); + const int _Ans = _STD _Memcmp_count(_UFirst1, _UFirst2, (_STD min)(_Num1, _Num2)); return _Memcmp_pred{}(_Ans, 0) || (_Ans == 0 && _Num1 < _Num2); } } @@ -5557,7 +5561,7 @@ _NODISCARD bool lexicographical_compare(_ExPo&&, const _FwdIt1 _First1, const _F // not parallelized at present, parallelism expected to be feasible in a future release _REQUIRE_PARALLEL_ITERATOR(_FwdIt1); _REQUIRE_PARALLEL_ITERATOR(_FwdIt2); - return _STD lexicographical_compare(_First1, _Last1, _First2, _Last2, _Pass_fn(_Pred)); + return _STD lexicographical_compare(_First1, _Last1, _First2, _Last2, _STD _Pass_fn(_Pred)); } _EXPORT_STD template = 0> @@ -5614,19 +5618,19 @@ using _Lex_compare_three_way_memcmp_classify = _EXPORT_STD template _NODISCARD constexpr auto lexicographical_compare_three_way(const _InIt1 _First1, const _InIt1 _Last1, const _InIt2 _First2, const _InIt2 _Last2, _Cmp _Comp) -> decltype(_Comp(*_First1, *_First2)) { - _Adl_verify_range(_First1, _Last1); - _Adl_verify_range(_First2, _Last2); - auto _UFirst1 = _Get_unwrapped(_First1); - const auto _ULast1 = _Get_unwrapped(_Last1); - auto _UFirst2 = _Get_unwrapped(_First2); - const auto _ULast2 = _Get_unwrapped(_Last2); + _STD _Adl_verify_range(_First1, _Last1); + _STD _Adl_verify_range(_First2, _Last2); + auto _UFirst1 = _STD _Get_unwrapped(_First1); + const auto _ULast1 = _STD _Get_unwrapped(_Last1); + auto _UFirst2 = _STD _Get_unwrapped(_First2); + const auto _ULast2 = _STD _Get_unwrapped(_Last2); using _Memcmp_pred = _Lex_compare_three_way_memcmp_classify; if constexpr (!is_void_v<_Memcmp_pred>) { if (!_STD is_constant_evaluated()) { const auto _Num1 = static_cast(_ULast1 - _UFirst1); const auto _Num2 = static_cast(_ULast2 - _UFirst2); - const int _Ans = _Memcmp_count(_UFirst1, _UFirst2, (_STD min)(_Num1, _Num2)); + const int _Ans = _STD _Memcmp_count(_UFirst1, _UFirst2, (_STD min)(_Num1, _Num2)); if (_Ans == 0) { return _Num1 <=> _Num2; } else { @@ -6590,8 +6594,8 @@ constexpr _FwdIt _Max_element_unchecked(_FwdIt _First, _FwdIt _Last, _Pr _Pred) #if _USE_STD_VECTOR_ALGORITHMS if constexpr (_Is_min_max_optimization_safe<_FwdIt, _Pr>) { if (!_Is_constant_evaluated()) { - const auto _First_ptr = _To_address(_First); - const auto _Result = _STD __std_max_element(_First_ptr, _To_address(_Last)); + const auto _First_ptr = _STD _To_address(_First); + const auto _Result = _STD __std_max_element(_First_ptr, _STD _To_address(_Last)); if constexpr (is_pointer_v<_FwdIt>) { return _Result; } else { @@ -6615,8 +6619,9 @@ constexpr _FwdIt _Max_element_unchecked(_FwdIt _First, _FwdIt _Last, _Pr _Pred) _EXPORT_STD template _NODISCARD constexpr _FwdIt max_element(_FwdIt _First, _FwdIt _Last, _Pr _Pred) { // find largest element - _Adl_verify_range(_First, _Last); - _Seek_wrapped(_First, _STD _Max_element_unchecked(_Get_unwrapped(_First), _Get_unwrapped(_Last), _Pass_fn(_Pred))); + _STD _Adl_verify_range(_First, _Last); + _STD _Seek_wrapped(_First, + _STD _Max_element_unchecked(_STD _Get_unwrapped(_First), _STD _Get_unwrapped(_Last), _STD _Pass_fn(_Pred))); return _First; } @@ -6631,7 +6636,7 @@ _NODISCARD _FwdIt max_element(_ExPo&&, _FwdIt _First, _FwdIt _Last, _Pr _Pred) n // find largest element // not parallelized at present, parallelism expected to be feasible in a future release _REQUIRE_PARALLEL_ITERATOR(_FwdIt); - return _STD max_element(_First, _Last, _Pass_fn(_Pred)); + return _STD max_element(_First, _Last, _STD _Pass_fn(_Pred)); } _EXPORT_STD template = 0> @@ -6685,18 +6690,19 @@ namespace ranges { template _Se, class _Pj = identity, indirect_strict_weak_order> _Pr = ranges::less> _NODISCARD constexpr _It operator()(_It _First, _Se _Last, _Pr _Pred = {}, _Pj _Proj = {}) const { - _Adl_verify_range(_First, _Last); - _Seek_wrapped(_First, _RANGES _Max_element_unchecked(_Unwrap_iter<_Se>(_STD move(_First)), - _Unwrap_sent<_It>(_STD move(_Last)), _Pass_fn(_Pred), _Pass_fn(_Proj))); + _STD _Adl_verify_range(_First, _Last); + _STD _Seek_wrapped( + _First, _RANGES _Max_element_unchecked(_RANGES _Unwrap_iter<_Se>(_STD move(_First)), + _RANGES _Unwrap_sent<_It>(_STD move(_Last)), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj))); return _First; } template , _Pj>> _Pr = ranges::less> _NODISCARD constexpr borrowed_iterator_t<_Rng> operator()(_Rng&& _Range, _Pr _Pred = {}, _Pj _Proj = {}) const { - auto _UResult = - _RANGES _Max_element_unchecked(_Ubegin(_Range), _Uend(_Range), _Pass_fn(_Pred), _Pass_fn(_Proj)); - return _Rewrap_iterator(_Range, _STD move(_UResult)); + auto _UResult = _RANGES _Max_element_unchecked( + _Ubegin(_Range), _Uend(_Range), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj)); + return _RANGES _Rewrap_iterator(_Range, _STD move(_UResult)); } }; @@ -6708,7 +6714,7 @@ namespace ranges { _EXPORT_STD template _NODISCARD constexpr _Ty(max)(initializer_list<_Ty> _Ilist, _Pr _Pred) { // return leftmost/largest - const _Ty* _Res = _STD _Max_element_unchecked(_Ilist.begin(), _Ilist.end(), _Pass_fn(_Pred)); + const _Ty* _Res = _STD _Max_element_unchecked(_Ilist.begin(), _Ilist.end(), _STD _Pass_fn(_Pred)); return *_Res; } @@ -6746,7 +6752,7 @@ namespace ranges { const auto _Last = _Range.end(); _STL_ASSERT(_First != _Last, "An initializer_list passed to std::ranges::max must not be empty. (N4950 [alg.min.max]/13)"); - return *_RANGES _Max_element_unchecked(_First, _Last, _Pass_fn(_Pred), _Pass_fn(_Proj)); + return *_RANGES _Max_element_unchecked(_First, _Last, _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj)); } template && _Prefer_iterator_copies>) { return static_cast>(*_RANGES _Max_element_unchecked( - _STD move(_UFirst), _STD move(_ULast), _Pass_fn(_Pred), _Pass_fn(_Proj))); + _STD move(_UFirst), _STD move(_ULast), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj))); } else { range_value_t<_Rng> _Found(*_UFirst); while (++_UFirst != _ULast) { @@ -6782,8 +6788,8 @@ constexpr _FwdIt _Min_element_unchecked(_FwdIt _First, _FwdIt _Last, _Pr _Pred) #if _USE_STD_VECTOR_ALGORITHMS if constexpr (_Is_min_max_optimization_safe<_FwdIt, _Pr>) { if (!_Is_constant_evaluated()) { - const auto _First_ptr = _To_address(_First); - const auto _Result = _STD __std_min_element(_First_ptr, _To_address(_Last)); + const auto _First_ptr = _STD _To_address(_First); + const auto _Result = _STD __std_min_element(_First_ptr, _STD _To_address(_Last)); if constexpr (is_pointer_v<_FwdIt>) { return _Result; } else { @@ -6807,8 +6813,9 @@ constexpr _FwdIt _Min_element_unchecked(_FwdIt _First, _FwdIt _Last, _Pr _Pred) _EXPORT_STD template _NODISCARD constexpr _FwdIt min_element(_FwdIt _First, _FwdIt _Last, _Pr _Pred) { // find smallest element - _Adl_verify_range(_First, _Last); - _Seek_wrapped(_First, _STD _Min_element_unchecked(_Get_unwrapped(_First), _Get_unwrapped(_Last), _Pass_fn(_Pred))); + _STD _Adl_verify_range(_First, _Last); + _STD _Seek_wrapped(_First, + _STD _Min_element_unchecked(_STD _Get_unwrapped(_First), _STD _Get_unwrapped(_Last), _STD _Pass_fn(_Pred))); return _First; } @@ -6823,7 +6830,7 @@ _NODISCARD _FwdIt min_element(_ExPo&&, _FwdIt _First, _FwdIt _Last, _Pr _Pred) n // find smallest element // not parallelized at present, parallelism expected to be feasible in a future release _REQUIRE_PARALLEL_ITERATOR(_FwdIt); - return _STD min_element(_First, _Last, _Pass_fn(_Pred)); + return _STD min_element(_First, _Last, _STD _Pass_fn(_Pred)); } _EXPORT_STD template = 0> @@ -6877,18 +6884,19 @@ namespace ranges { template _Se, class _Pj = identity, indirect_strict_weak_order> _Pr = ranges::less> _NODISCARD constexpr _It operator()(_It _First, _Se _Last, _Pr _Pred = {}, _Pj _Proj = {}) const { - _Adl_verify_range(_First, _Last); - _Seek_wrapped(_First, _RANGES _Min_element_unchecked(_Unwrap_iter<_Se>(_STD move(_First)), - _Unwrap_sent<_It>(_STD move(_Last)), _Pass_fn(_Pred), _Pass_fn(_Proj))); + _STD _Adl_verify_range(_First, _Last); + _STD _Seek_wrapped( + _First, _RANGES _Min_element_unchecked(_RANGES _Unwrap_iter<_Se>(_STD move(_First)), + _RANGES _Unwrap_sent<_It>(_STD move(_Last)), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj))); return _First; } template , _Pj>> _Pr = ranges::less> _NODISCARD constexpr borrowed_iterator_t<_Rng> operator()(_Rng&& _Range, _Pr _Pred = {}, _Pj _Proj = {}) const { - auto _UResult = - _RANGES _Min_element_unchecked(_Ubegin(_Range), _Uend(_Range), _Pass_fn(_Pred), _Pass_fn(_Proj)); - return _Rewrap_iterator(_Range, _STD move(_UResult)); + auto _UResult = _RANGES _Min_element_unchecked( + _Ubegin(_Range), _Uend(_Range), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj)); + return _RANGES _Rewrap_iterator(_Range, _STD move(_UResult)); } }; @@ -6900,7 +6908,7 @@ namespace ranges { _EXPORT_STD template _NODISCARD constexpr _Ty(min)(initializer_list<_Ty> _Ilist, _Pr _Pred) { // return leftmost/smallest - const _Ty* _Res = _STD _Min_element_unchecked(_Ilist.begin(), _Ilist.end(), _Pass_fn(_Pred)); + const _Ty* _Res = _STD _Min_element_unchecked(_Ilist.begin(), _Ilist.end(), _STD _Pass_fn(_Pred)); return *_Res; } @@ -6932,7 +6940,7 @@ namespace ranges { const auto _Last = _Range.end(); _STL_ASSERT(_First != _Last, "An initializer_list passed to std::ranges::min must not be empty. (N4950 [alg.min.max]/5)"); - return *_RANGES _Min_element_unchecked(_First, _Last, _Pass_fn(_Pred), _Pass_fn(_Proj)); + return *_RANGES _Min_element_unchecked(_First, _Last, _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj)); } template && _Prefer_iterator_copies>) { return static_cast>(*_RANGES _Min_element_unchecked( - _STD move(_UFirst), _STD move(_ULast), _Pass_fn(_Pred), _Pass_fn(_Proj))); + _STD move(_UFirst), _STD move(_ULast), _STD _Pass_fn(_Pred), _STD _Pass_fn(_Proj))); } else { range_value_t<_Rng> _Found(*_UFirst); while (++_UFirst != _ULast) { diff --git a/stl/inc/yvals.h b/stl/inc/yvals.h index e032fa5c8f3..842efae2798 100644 --- a/stl/inc/yvals.h +++ b/stl/inc/yvals.h @@ -350,7 +350,6 @@ extern "C++" class _CRTIMP2_PURE_IMPORT _Lockit { // lock while object in existe __CLR_OR_THIS_CALL ~_Lockit() noexcept { // clear the lock _Lockit_dtor(this); } - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv __thiscall _Lockit() noexcept; explicit __thiscall _Lockit(int) noexcept; // set the lock @@ -452,7 +451,7 @@ class _CRTIMP2_PURE_IMPORT _EmptyLockit { // empty lock class used for bin compa #define _CATCH_END } #define _RERAISE throw -#define _THROW(...) throw __VA_ARGS__ +#define _THROW(...) throw(__VA_ARGS__) #else // ^^^ _HAS_EXCEPTIONS / !_HAS_EXCEPTIONS vvv #define _TRY_BEGIN \ @@ -475,7 +474,7 @@ class _CRTIMP2_PURE_IMPORT _EmptyLockit { // empty lock class used for bin compa #endif #define _RERAISE -#define _THROW(...) __VA_ARGS__._Raise() +#define _THROW(...) (__VA_ARGS__)._Raise() #endif // ^^^ !_HAS_EXCEPTIONS ^^^ _STD_END diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index b7eeea1e958..aa907237966 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -882,7 +882,7 @@ #define _CPPLIB_VER 650 #define _MSVC_STL_VERSION 143 -#define _MSVC_STL_UPDATE 202310L +#define _MSVC_STL_UPDATE 202312L #ifndef _ALLOW_COMPILER_AND_STL_VERSION_MISMATCH #if defined(__CUDACC__) && defined(__CUDACC_VER_MAJOR__) @@ -892,8 +892,8 @@ _EMIT_STL_ERROR(STL1002, "Unexpected compiler version, expected CUDA 11.6 or new #elif defined(__EDG__) // not attempting to detect __EDG_VERSION__ being less than expected #elif defined(__clang__) -#if __clang_major__ < 16 -_EMIT_STL_ERROR(STL1000, "Unexpected compiler version, expected Clang 16.0.0 or newer."); +#if __clang_major__ < 17 +_EMIT_STL_ERROR(STL1000, "Unexpected compiler version, expected Clang 17.0.0 or newer."); #endif // ^^^ old Clang ^^^ #elif defined(_MSC_VER) #if _MSC_VER < 1939 // Coarse-grained, not inspecting _MSC_FULL_VER @@ -1956,7 +1956,7 @@ compiler option, or define _ALLOW_RTCc_IN_STL to suppress this error. // TRANSITION: _USE_EXTERN_CXX_EVERYWHERE_FOR_STL controls whether we also wrap the STL's // header-only code in this linkage-specification, as a temporary workaround to allow -// the named module to coexist with classic includes in the same translation unit. +// importing the named module in a translation unit with classic includes. #ifndef _USE_EXTERN_CXX_EVERYWHERE_FOR_STL #define _USE_EXTERN_CXX_EVERYWHERE_FOR_STL _HAS_CXX20 diff --git a/stl/msbuild/stl_1/md/dirs.proj b/stl/msbuild/stl_1/md/dirs.proj index 065638b5f64..fe787e07677 100644 --- a/stl/msbuild/stl_1/md/dirs.proj +++ b/stl/msbuild/stl_1/md/dirs.proj @@ -7,10 +7,10 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - - + + + + diff --git a/stl/msbuild/stl_1/md/msvcp_1_app/msvcp_1.nativeproj b/stl/msbuild/stl_1/md/msvcp_1_app/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/md/msvcp_1_app/msvcp_1.nativeproj rename to stl/msbuild/stl_1/md/msvcp_1_app/msvcp_1.vcxproj index 9a2a0eeb8ae..14fd24c2da0 100644 --- a/stl/msbuild/stl_1/md/msvcp_1_app/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/md/msvcp_1_app/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {AC581714-5C34-43F1-88AA-F239723F751F} - false + true diff --git a/stl/msbuild/stl_1/md/msvcp_1_kernel32/msvcp_1.nativeproj b/stl/msbuild/stl_1/md/msvcp_1_kernel32/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/md/msvcp_1_kernel32/msvcp_1.nativeproj rename to stl/msbuild/stl_1/md/msvcp_1_kernel32/msvcp_1.vcxproj index 258e418170a..0b532beeda3 100644 --- a/stl/msbuild/stl_1/md/msvcp_1_kernel32/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/md/msvcp_1_kernel32/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {58C30DB7-35C9-432D-8490-66F6E5901B8F} - false + true diff --git a/stl/msbuild/stl_1/md/msvcp_1_netfx/msvcp_1.nativeproj b/stl/msbuild/stl_1/md/msvcp_1_netfx/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/md/msvcp_1_netfx/msvcp_1.nativeproj rename to stl/msbuild/stl_1/md/msvcp_1_netfx/msvcp_1.vcxproj index 39c8ebc8873..1da868cd7ff 100644 --- a/stl/msbuild/stl_1/md/msvcp_1_netfx/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/md/msvcp_1_netfx/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {CAA5F16A-A6C1-4450-981D-E3BF0F0A7B5B} - false + true diff --git a/stl/msbuild/stl_1/md/msvcp_1_onecore/msvcp_1.nativeproj b/stl/msbuild/stl_1/md/msvcp_1_onecore/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/md/msvcp_1_onecore/msvcp_1.nativeproj rename to stl/msbuild/stl_1/md/msvcp_1_onecore/msvcp_1.vcxproj index 732b4404a0d..0ff74c25a18 100644 --- a/stl/msbuild/stl_1/md/msvcp_1_onecore/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/md/msvcp_1_onecore/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {2BD1256B-3615-4061-AD30-4F5E1E092381} - false + true diff --git a/stl/msbuild/stl_1/msvcp_1.settings.targets b/stl/msbuild/stl_1/msvcp_1.settings.targets index 176ccb16a5a..2611102d179 100644 --- a/stl/msbuild/stl_1/msvcp_1.settings.targets +++ b/stl/msbuild/stl_1/msvcp_1.settings.targets @@ -6,6 +6,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> DynamicLibrary + true @@ -32,7 +33,6 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception $(ClDefines);_CRT_APP false - true $(IntermediateOutputDirectory) $(CrtBuildDir)\msvcprt_1$(BuildSuffix).$(MsvcpFlavor).import_only.lib $(LibOutputFileName).$(MsvcpFlavor) @@ -64,7 +64,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - + diff --git a/stl/msbuild/stl_1/stl_1.files.settings.targets b/stl/msbuild/stl_1/stl_1.files.settings.targets index f181f2dc6eb..8ab1dda51b6 100644 --- a/stl/msbuild/stl_1/stl_1.files.settings.targets +++ b/stl/msbuild/stl_1/stl_1.files.settings.targets @@ -6,16 +6,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> - - nativecpp - - - nativecpp - + + diff --git a/stl/msbuild/stl_1/xmd/dirs.proj b/stl/msbuild/stl_1/xmd/dirs.proj index 9e29563e141..8ceb699344f 100644 --- a/stl/msbuild/stl_1/xmd/dirs.proj +++ b/stl/msbuild/stl_1/xmd/dirs.proj @@ -9,13 +9,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - + + + - + diff --git a/stl/msbuild/stl_1/xmd/msvcp_1_app/msvcp_1.nativeproj b/stl/msbuild/stl_1/xmd/msvcp_1_app/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/xmd/msvcp_1_app/msvcp_1.nativeproj rename to stl/msbuild/stl_1/xmd/msvcp_1_app/msvcp_1.vcxproj index 4370ebc1e10..e25e51b7ccf 100644 --- a/stl/msbuild/stl_1/xmd/msvcp_1_app/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/xmd/msvcp_1_app/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {E30D9740-AD72-4A90-B8A9-A1CABCC52EB9} - false + true diff --git a/stl/msbuild/stl_1/xmd/msvcp_1_kernel32/msvcp_1.nativeproj b/stl/msbuild/stl_1/xmd/msvcp_1_kernel32/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/xmd/msvcp_1_kernel32/msvcp_1.nativeproj rename to stl/msbuild/stl_1/xmd/msvcp_1_kernel32/msvcp_1.vcxproj index 8fa959f7c76..d24d07dea1a 100644 --- a/stl/msbuild/stl_1/xmd/msvcp_1_kernel32/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/xmd/msvcp_1_kernel32/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {A90AB3DB-494B-4ECD-AEFB-E880F9C58F74} - false + true diff --git a/stl/msbuild/stl_1/xmd/msvcp_1_netfx/msvcp_1.nativeproj b/stl/msbuild/stl_1/xmd/msvcp_1_netfx/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/xmd/msvcp_1_netfx/msvcp_1.nativeproj rename to stl/msbuild/stl_1/xmd/msvcp_1_netfx/msvcp_1.vcxproj index bed9439872c..e280bcca34a 100644 --- a/stl/msbuild/stl_1/xmd/msvcp_1_netfx/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/xmd/msvcp_1_netfx/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {B37B087A-D591-472E-8E73-396CD32F5E77} - false + true diff --git a/stl/msbuild/stl_1/xmd/msvcp_1_onecore/msvcp_1.nativeproj b/stl/msbuild/stl_1/xmd/msvcp_1_onecore/msvcp_1.vcxproj similarity index 91% rename from stl/msbuild/stl_1/xmd/msvcp_1_onecore/msvcp_1.nativeproj rename to stl/msbuild/stl_1/xmd/msvcp_1_onecore/msvcp_1.vcxproj index 24ba1f0c656..48cfed9ec6c 100644 --- a/stl/msbuild/stl_1/xmd/msvcp_1_onecore/msvcp_1.nativeproj +++ b/stl/msbuild/stl_1/xmd/msvcp_1_onecore/msvcp_1.vcxproj @@ -6,7 +6,7 @@ --> {6E55B52D-472B-4A51-AC94-B1E391ECAAD7} - false + true diff --git a/stl/msbuild/stl_2/md/dirs.proj b/stl/msbuild/stl_2/md/dirs.proj index cc4301acf4b..806a2be293a 100644 --- a/stl/msbuild/stl_2/md/dirs.proj +++ b/stl/msbuild/stl_2/md/dirs.proj @@ -7,10 +7,10 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - - + + + + diff --git a/stl/msbuild/stl_2/md/msvcp_2_app/msvcp_2.nativeproj b/stl/msbuild/stl_2/md/msvcp_2_app/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/md/msvcp_2_app/msvcp_2.nativeproj rename to stl/msbuild/stl_2/md/msvcp_2_app/msvcp_2.vcxproj index fb8bc40c850..c9ce5dd85b6 100644 --- a/stl/msbuild/stl_2/md/msvcp_2_app/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/md/msvcp_2_app/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {451BB540-FBE3-4BFC-B3FC-1D118E6D44ED} - false + true diff --git a/stl/msbuild/stl_2/md/msvcp_2_kernel32/msvcp_2.nativeproj b/stl/msbuild/stl_2/md/msvcp_2_kernel32/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/md/msvcp_2_kernel32/msvcp_2.nativeproj rename to stl/msbuild/stl_2/md/msvcp_2_kernel32/msvcp_2.vcxproj index bdce81e61b9..ff25d807284 100644 --- a/stl/msbuild/stl_2/md/msvcp_2_kernel32/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/md/msvcp_2_kernel32/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {219EFF3E-A40D-46E4-86DC-887AF90330CA} - false + true diff --git a/stl/msbuild/stl_2/md/msvcp_2_netfx/msvcp_2.nativeproj b/stl/msbuild/stl_2/md/msvcp_2_netfx/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/md/msvcp_2_netfx/msvcp_2.nativeproj rename to stl/msbuild/stl_2/md/msvcp_2_netfx/msvcp_2.vcxproj index 7dcac8b0f07..1632be847dc 100644 --- a/stl/msbuild/stl_2/md/msvcp_2_netfx/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/md/msvcp_2_netfx/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {DEC67AC5-1EF2-4745-BAFF-28484A23477E} - false + true diff --git a/stl/msbuild/stl_2/md/msvcp_2_onecore/msvcp_2.nativeproj b/stl/msbuild/stl_2/md/msvcp_2_onecore/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/md/msvcp_2_onecore/msvcp_2.nativeproj rename to stl/msbuild/stl_2/md/msvcp_2_onecore/msvcp_2.vcxproj index a1063717ef8..249bed7c008 100644 --- a/stl/msbuild/stl_2/md/msvcp_2_onecore/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/md/msvcp_2_onecore/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {24C78BD7-AED7-4090-BE81-8E3247ECC5A3} - false + true diff --git a/stl/msbuild/stl_2/msvcp_2.settings.targets b/stl/msbuild/stl_2/msvcp_2.settings.targets index b11b1a4c331..af9aac79171 100644 --- a/stl/msbuild/stl_2/msvcp_2.settings.targets +++ b/stl/msbuild/stl_2/msvcp_2.settings.targets @@ -6,6 +6,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> DynamicLibrary + true @@ -32,7 +33,6 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception $(ClDefines);_CRT_APP false - true $(IntermediateOutputDirectory) $(CrtBuildDir)\msvcprt_2$(BuildSuffix).$(MsvcpFlavor).import_only.lib $(LibOutputFileName).$(MsvcpFlavor) @@ -64,7 +64,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - + diff --git a/stl/msbuild/stl_2/stl_2.files.settings.targets b/stl/msbuild/stl_2/stl_2.files.settings.targets index 086fbf9d0c0..e22900c52c7 100644 --- a/stl/msbuild/stl_2/stl_2.files.settings.targets +++ b/stl/msbuild/stl_2/stl_2.files.settings.targets @@ -6,16 +6,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> - - nativecpp - - - nativecpp - + + diff --git a/stl/msbuild/stl_2/xmd/dirs.proj b/stl/msbuild/stl_2/xmd/dirs.proj index 3cc6feb65b1..420d911ebfc 100644 --- a/stl/msbuild/stl_2/xmd/dirs.proj +++ b/stl/msbuild/stl_2/xmd/dirs.proj @@ -9,13 +9,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - + + + - + diff --git a/stl/msbuild/stl_2/xmd/msvcp_2_app/msvcp_2.nativeproj b/stl/msbuild/stl_2/xmd/msvcp_2_app/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/xmd/msvcp_2_app/msvcp_2.nativeproj rename to stl/msbuild/stl_2/xmd/msvcp_2_app/msvcp_2.vcxproj index 1c1a9414c70..efae9b93de0 100644 --- a/stl/msbuild/stl_2/xmd/msvcp_2_app/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/xmd/msvcp_2_app/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {EFC70BD7-F82E-4951-8F60-468B164BF419} - false + true diff --git a/stl/msbuild/stl_2/xmd/msvcp_2_kernel32/msvcp_2.nativeproj b/stl/msbuild/stl_2/xmd/msvcp_2_kernel32/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/xmd/msvcp_2_kernel32/msvcp_2.nativeproj rename to stl/msbuild/stl_2/xmd/msvcp_2_kernel32/msvcp_2.vcxproj index 071b5877006..e906b2080a5 100644 --- a/stl/msbuild/stl_2/xmd/msvcp_2_kernel32/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/xmd/msvcp_2_kernel32/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {3CFB766B-CCA6-4078-9A03-CAE24FF65373} - false + true diff --git a/stl/msbuild/stl_2/xmd/msvcp_2_netfx/msvcp_2.nativeproj b/stl/msbuild/stl_2/xmd/msvcp_2_netfx/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/xmd/msvcp_2_netfx/msvcp_2.nativeproj rename to stl/msbuild/stl_2/xmd/msvcp_2_netfx/msvcp_2.vcxproj index 73d7b05cd57..d6f8c0de67c 100644 --- a/stl/msbuild/stl_2/xmd/msvcp_2_netfx/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/xmd/msvcp_2_netfx/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {4A10E59B-BC11-478F-A911-4985F503B489} - false + true diff --git a/stl/msbuild/stl_2/xmd/msvcp_2_onecore/msvcp_2.nativeproj b/stl/msbuild/stl_2/xmd/msvcp_2_onecore/msvcp_2.vcxproj similarity index 91% rename from stl/msbuild/stl_2/xmd/msvcp_2_onecore/msvcp_2.nativeproj rename to stl/msbuild/stl_2/xmd/msvcp_2_onecore/msvcp_2.vcxproj index b59f49bb03d..7f74a28c537 100644 --- a/stl/msbuild/stl_2/xmd/msvcp_2_onecore/msvcp_2.nativeproj +++ b/stl/msbuild/stl_2/xmd/msvcp_2_onecore/msvcp_2.vcxproj @@ -6,7 +6,7 @@ --> {4897703D-D42F-4CF6-B4C1-B7CFD3D9F054} - false + true diff --git a/stl/msbuild/stl_asan/dirs.proj b/stl/msbuild/stl_asan/dirs.proj index 5ae2ed94eb5..528fa0815df 100644 --- a/stl/msbuild/stl_asan/dirs.proj +++ b/stl/msbuild/stl_asan/dirs.proj @@ -7,7 +7,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - + diff --git a/stl/msbuild/stl_asan/stl_asan.files.settings.targets b/stl/msbuild/stl_asan/stl_asan.files.settings.targets index 0ae0c140546..7d19bab6318 100644 --- a/stl/msbuild/stl_asan/stl_asan.files.settings.targets +++ b/stl/msbuild/stl_asan/stl_asan.files.settings.targets @@ -6,11 +6,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> - - nativecpp - + diff --git a/stl/msbuild/stl_asan/stl_asan.nativeproj b/stl/msbuild/stl_asan/stl_asan.vcxproj similarity index 90% rename from stl/msbuild/stl_asan/stl_asan.nativeproj rename to stl/msbuild/stl_asan/stl_asan.vcxproj index 048d94c520b..45baac9d280 100644 --- a/stl/msbuild/stl_asan/stl_asan.nativeproj +++ b/stl/msbuild/stl_asan/stl_asan.vcxproj @@ -6,7 +6,7 @@ --> {B8236181-0F0C-465B-8729-36944CBF324A} - false + true diff --git a/stl/msbuild/stl_atomic_wait/md/dirs.proj b/stl/msbuild/stl_atomic_wait/md/dirs.proj index 1d7a450b05c..7d53392a298 100644 --- a/stl/msbuild/stl_atomic_wait/md/dirs.proj +++ b/stl/msbuild/stl_atomic_wait/md/dirs.proj @@ -7,10 +7,10 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - - + + + + diff --git a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_app/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_app/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_app/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_app/msvcp_atomic_wait.vcxproj index 4404468a37c..dfc8cb18b05 100644 --- a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_app/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_app/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {99C61FE5-793F-4D49-82F6-27938575B058} - false + true diff --git a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.vcxproj index 29819eaaa3b..a199dcf5904 100644 --- a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {2C785D3F-9961-46E9-A202-D410DAD6269D} - false + true diff --git a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_netfx/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_netfx/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_netfx/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_netfx/msvcp_atomic_wait.vcxproj index f81dae4d668..08b2db8634a 100644 --- a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_netfx/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_netfx/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {B0D8709C-8649-43DF-AB53-AA05134A9B83} - false + true diff --git a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_onecore/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_onecore/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_onecore/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_onecore/msvcp_atomic_wait.vcxproj index 76c7329c1b0..7e272c7580a 100644 --- a/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_onecore/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/md/msvcp_atomic_wait_onecore/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {22F86914-609E-4BF5-A1DA-2804C1251044} - false + true diff --git a/stl/msbuild/stl_atomic_wait/msvcp_atomic_wait.settings.targets b/stl/msbuild/stl_atomic_wait/msvcp_atomic_wait.settings.targets index 2f778a88276..b46b1cd4a17 100644 --- a/stl/msbuild/stl_atomic_wait/msvcp_atomic_wait.settings.targets +++ b/stl/msbuild/stl_atomic_wait/msvcp_atomic_wait.settings.targets @@ -6,6 +6,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> DynamicLibrary + true @@ -32,7 +33,6 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception $(ClDefines);_CRT_APP false - true $(IntermediateOutputDirectory) $(CrtBuildDir)\msvcprt_atomic_wait$(BuildSuffix).$(MsvcpFlavor).import_only.lib $(LibOutputFileName).$(MsvcpFlavor) @@ -64,7 +64,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - + diff --git a/stl/msbuild/stl_atomic_wait/stl_atomic_wait.files.settings.targets b/stl/msbuild/stl_atomic_wait/stl_atomic_wait.files.settings.targets index 6146998be61..46dcf17cb04 100644 --- a/stl/msbuild/stl_atomic_wait/stl_atomic_wait.files.settings.targets +++ b/stl/msbuild/stl_atomic_wait/stl_atomic_wait.files.settings.targets @@ -5,18 +5,10 @@ Copyright (c) Microsoft Corporation. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> - - nativecpp - - - nativecpp - + + + + + diff --git a/stl/msbuild/stl_atomic_wait/xmd/dirs.proj b/stl/msbuild/stl_atomic_wait/xmd/dirs.proj index 83275149b04..2fad5e7e478 100644 --- a/stl/msbuild/stl_atomic_wait/xmd/dirs.proj +++ b/stl/msbuild/stl_atomic_wait/xmd/dirs.proj @@ -9,13 +9,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - + + + - + diff --git a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_app/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_app/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_app/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_app/msvcp_atomic_wait.vcxproj index 719161c308a..d513772bd73 100644 --- a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_app/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_app/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {3AEA1ADF-5AA1-4BAB-B0AA-104B622C75B5} - false + true diff --git a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.vcxproj index 96aff15ad9a..e3f2ee93f2d 100644 --- a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_kernel32/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {D771D7D3-3021-4CBE-A966-68CD817D0C04} - false + true diff --git a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_netfx/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_netfx/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_netfx/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_netfx/msvcp_atomic_wait.vcxproj index 9d566dadb5f..a505fdf55a2 100644 --- a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_netfx/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_netfx/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {31EE7F7B-CF43-489D-8419-EDB8F2C152EE} - false + true diff --git a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_onecore/msvcp_atomic_wait.nativeproj b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_onecore/msvcp_atomic_wait.vcxproj similarity index 91% rename from stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_onecore/msvcp_atomic_wait.nativeproj rename to stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_onecore/msvcp_atomic_wait.vcxproj index 1f9168ca537..7383564a487 100644 --- a/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_onecore/msvcp_atomic_wait.nativeproj +++ b/stl/msbuild/stl_atomic_wait/xmd/msvcp_atomic_wait_onecore/msvcp_atomic_wait.vcxproj @@ -6,7 +6,7 @@ --> {57A6A807-C9DC-4ADF-8128-3589FCDAA2E4} - false + true diff --git a/stl/msbuild/stl_base/md/dirs.proj b/stl/msbuild/stl_base/md/dirs.proj index b72032aa131..32c71e4692f 100644 --- a/stl/msbuild/stl_base/md/dirs.proj +++ b/stl/msbuild/stl_base/md/dirs.proj @@ -7,10 +7,10 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - - + + + + diff --git a/stl/msbuild/stl_base/md/msvcp_app/msvcp.nativeproj b/stl/msbuild/stl_base/md/msvcp_app/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/md/msvcp_app/msvcp.nativeproj rename to stl/msbuild/stl_base/md/msvcp_app/msvcp.vcxproj index 38fa814f722..0ab06b27519 100644 --- a/stl/msbuild/stl_base/md/msvcp_app/msvcp.nativeproj +++ b/stl/msbuild/stl_base/md/msvcp_app/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {26CFD97A-BD12-4347-ACEA-3B13904E59DA} - false + true diff --git a/stl/msbuild/stl_base/md/msvcp_kernel32/msvcp.nativeproj b/stl/msbuild/stl_base/md/msvcp_kernel32/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/md/msvcp_kernel32/msvcp.nativeproj rename to stl/msbuild/stl_base/md/msvcp_kernel32/msvcp.vcxproj index 760912837d7..81b28f9e36f 100644 --- a/stl/msbuild/stl_base/md/msvcp_kernel32/msvcp.nativeproj +++ b/stl/msbuild/stl_base/md/msvcp_kernel32/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {00EE32E2-A705-4D07-A967-60092E13F497} - false + true diff --git a/stl/msbuild/stl_base/md/msvcp_netfx/msvcp.nativeproj b/stl/msbuild/stl_base/md/msvcp_netfx/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/md/msvcp_netfx/msvcp.nativeproj rename to stl/msbuild/stl_base/md/msvcp_netfx/msvcp.vcxproj index 7d3ec0cc88a..8b4e828f685 100644 --- a/stl/msbuild/stl_base/md/msvcp_netfx/msvcp.nativeproj +++ b/stl/msbuild/stl_base/md/msvcp_netfx/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {98CE2EB2-F428-4C28-9186-8D614658A1BE} - false + true diff --git a/stl/msbuild/stl_base/md/msvcp_onecore/msvcp.nativeproj b/stl/msbuild/stl_base/md/msvcp_onecore/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/md/msvcp_onecore/msvcp.nativeproj rename to stl/msbuild/stl_base/md/msvcp_onecore/msvcp.vcxproj index 084241b2d2e..ec3a21db1a0 100644 --- a/stl/msbuild/stl_base/md/msvcp_onecore/msvcp.nativeproj +++ b/stl/msbuild/stl_base/md/msvcp_onecore/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {3318F9FE-FD4A-4D16-82F6-7DBC8007D1B6} - false + true diff --git a/stl/msbuild/stl_base/msvcp.settings.targets b/stl/msbuild/stl_base/msvcp.settings.targets index dd0140ac104..7418b2656ac 100644 --- a/stl/msbuild/stl_base/msvcp.settings.targets +++ b/stl/msbuild/stl_base/msvcp.settings.targets @@ -6,6 +6,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> DynamicLibrary + true @@ -35,7 +36,6 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception $(ClDefines);_CRT_APP false - true $(IntermediateOutputDirectory) $(CrtBuildDir)\msvcprt_base$(BuildSuffix).$(MsvcpFlavor).import_only.lib $(LibOutputFileName).$(MsvcpFlavor) diff --git a/stl/msbuild/stl_base/mt/dirs.proj b/stl/msbuild/stl_base/mt/dirs.proj index c50f9e8f604..68f29ec0dd0 100644 --- a/stl/msbuild/stl_base/mt/dirs.proj +++ b/stl/msbuild/stl_base/mt/dirs.proj @@ -7,8 +7,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - + + diff --git a/stl/msbuild/stl_base/mt/libcpmt_kernel32/libcpmt.nativeproj b/stl/msbuild/stl_base/mt/libcpmt_kernel32/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/mt/libcpmt_kernel32/libcpmt.nativeproj rename to stl/msbuild/stl_base/mt/libcpmt_kernel32/libcpmt.vcxproj index 6a95c5dead9..51dc455145e 100644 --- a/stl/msbuild/stl_base/mt/libcpmt_kernel32/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/mt/libcpmt_kernel32/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {B56C39F9-89BF-486F-9C5E-B88FD82E2AA7} - false + true diff --git a/stl/msbuild/stl_base/mt/libcpmt_onecore/libcpmt.nativeproj b/stl/msbuild/stl_base/mt/libcpmt_onecore/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/mt/libcpmt_onecore/libcpmt.nativeproj rename to stl/msbuild/stl_base/mt/libcpmt_onecore/libcpmt.vcxproj index 3c418307ea6..c48ee808ca6 100644 --- a/stl/msbuild/stl_base/mt/libcpmt_onecore/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/mt/libcpmt_onecore/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {5F515BBF-E680-4553-B38E-0C125D2A6455} - false + true diff --git a/stl/msbuild/stl_base/mt1/dirs.proj b/stl/msbuild/stl_base/mt1/dirs.proj index c50f9e8f604..68f29ec0dd0 100644 --- a/stl/msbuild/stl_base/mt1/dirs.proj +++ b/stl/msbuild/stl_base/mt1/dirs.proj @@ -7,8 +7,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - + + diff --git a/stl/msbuild/stl_base/mt1/libcpmt_kernel32/libcpmt.nativeproj b/stl/msbuild/stl_base/mt1/libcpmt_kernel32/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/mt1/libcpmt_kernel32/libcpmt.nativeproj rename to stl/msbuild/stl_base/mt1/libcpmt_kernel32/libcpmt.vcxproj index 5176f8fef9d..6c8fb7876ca 100644 --- a/stl/msbuild/stl_base/mt1/libcpmt_kernel32/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/mt1/libcpmt_kernel32/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {027B5024-5996-4645-BC46-8FEF2E2A4E71} - false + true diff --git a/stl/msbuild/stl_base/mt1/libcpmt_onecore/libcpmt.nativeproj b/stl/msbuild/stl_base/mt1/libcpmt_onecore/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/mt1/libcpmt_onecore/libcpmt.nativeproj rename to stl/msbuild/stl_base/mt1/libcpmt_onecore/libcpmt.vcxproj index bd6ba4d81be..761f0933939 100644 --- a/stl/msbuild/stl_base/mt1/libcpmt_onecore/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/mt1/libcpmt_onecore/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {0824A200-D996-41C0-87D8-62CF1D7483C6} - false + true diff --git a/stl/msbuild/stl_base/stl.files.settings.targets b/stl/msbuild/stl_base/stl.files.settings.targets index d9453cc46d7..58dd169af60 100644 --- a/stl/msbuild/stl_base/stl.files.settings.targets +++ b/stl/msbuild/stl_base/stl.files.settings.targets @@ -7,7 +7,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - nativecpp false true false - + - - nativecpp + async - + - - nativecpp - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - nativecpp + true - + - - nativecpp false true - + $(ClDefines);_ENFORCE_ONLY_CORE_HEADERS + @@ -197,12 +188,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - nativecpp - + + diff --git a/stl/msbuild/stl_base/xmd/dirs.proj b/stl/msbuild/stl_base/xmd/dirs.proj index f6239593654..f14091bd657 100644 --- a/stl/msbuild/stl_base/xmd/dirs.proj +++ b/stl/msbuild/stl_base/xmd/dirs.proj @@ -10,13 +10,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception '$(Configuration)' == 'chk' or '$(Configuration)' == 'dbg')"> - - - + + + - + diff --git a/stl/msbuild/stl_base/xmd/msvcp_app/msvcp.nativeproj b/stl/msbuild/stl_base/xmd/msvcp_app/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmd/msvcp_app/msvcp.nativeproj rename to stl/msbuild/stl_base/xmd/msvcp_app/msvcp.vcxproj index d34cc038e06..96187e126aa 100644 --- a/stl/msbuild/stl_base/xmd/msvcp_app/msvcp.nativeproj +++ b/stl/msbuild/stl_base/xmd/msvcp_app/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {3DFFE995-1592-4D71-A088-65B5E90829E3} - false + true diff --git a/stl/msbuild/stl_base/xmd/msvcp_kernel32/msvcp.nativeproj b/stl/msbuild/stl_base/xmd/msvcp_kernel32/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmd/msvcp_kernel32/msvcp.nativeproj rename to stl/msbuild/stl_base/xmd/msvcp_kernel32/msvcp.vcxproj index 241b0db2c9a..2e4164bcf4b 100644 --- a/stl/msbuild/stl_base/xmd/msvcp_kernel32/msvcp.nativeproj +++ b/stl/msbuild/stl_base/xmd/msvcp_kernel32/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {19B72B03-37A8-4ED7-85D9-26031335269E} - false + true diff --git a/stl/msbuild/stl_base/xmd/msvcp_netfx/msvcp.nativeproj b/stl/msbuild/stl_base/xmd/msvcp_netfx/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmd/msvcp_netfx/msvcp.nativeproj rename to stl/msbuild/stl_base/xmd/msvcp_netfx/msvcp.vcxproj index 5dd0b9923b7..ec4c96e3c16 100644 --- a/stl/msbuild/stl_base/xmd/msvcp_netfx/msvcp.nativeproj +++ b/stl/msbuild/stl_base/xmd/msvcp_netfx/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {9E0C069E-C345-4977-9753-16CEE50029D8} - false + true diff --git a/stl/msbuild/stl_base/xmd/msvcp_onecore/msvcp.nativeproj b/stl/msbuild/stl_base/xmd/msvcp_onecore/msvcp.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmd/msvcp_onecore/msvcp.nativeproj rename to stl/msbuild/stl_base/xmd/msvcp_onecore/msvcp.vcxproj index a4e38d88190..bdedc5a8b46 100644 --- a/stl/msbuild/stl_base/xmd/msvcp_onecore/msvcp.nativeproj +++ b/stl/msbuild/stl_base/xmd/msvcp_onecore/msvcp.vcxproj @@ -6,7 +6,7 @@ --> {617D60ED-BAB2-45FA-8FAF-B0E7F9304403} - false + true diff --git a/stl/msbuild/stl_base/xmt/dirs.proj b/stl/msbuild/stl_base/xmt/dirs.proj index 4701b098b56..4a49a0688dd 100644 --- a/stl/msbuild/stl_base/xmt/dirs.proj +++ b/stl/msbuild/stl_base/xmt/dirs.proj @@ -10,8 +10,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - + Include="libcpmt_kernel32\libcpmt.vcxproj" /> + diff --git a/stl/msbuild/stl_base/xmt/libcpmt_kernel32/libcpmt.nativeproj b/stl/msbuild/stl_base/xmt/libcpmt_kernel32/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmt/libcpmt_kernel32/libcpmt.nativeproj rename to stl/msbuild/stl_base/xmt/libcpmt_kernel32/libcpmt.vcxproj index 35587a51410..c932ba48a8c 100644 --- a/stl/msbuild/stl_base/xmt/libcpmt_kernel32/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/xmt/libcpmt_kernel32/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {ECA62467-8F67-4F70-953D-0916472878AA} - false + true diff --git a/stl/msbuild/stl_base/xmt/libcpmt_onecore/libcpmt.nativeproj b/stl/msbuild/stl_base/xmt/libcpmt_onecore/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmt/libcpmt_onecore/libcpmt.nativeproj rename to stl/msbuild/stl_base/xmt/libcpmt_onecore/libcpmt.vcxproj index b0d0e7da211..3e1abdd90c3 100644 --- a/stl/msbuild/stl_base/xmt/libcpmt_onecore/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/xmt/libcpmt_onecore/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {02DA6861-AC66-4EA6-B558-9D0E0F1073A8} - false + true diff --git a/stl/msbuild/stl_base/xmt0/dirs.proj b/stl/msbuild/stl_base/xmt0/dirs.proj index c50f9e8f604..68f29ec0dd0 100644 --- a/stl/msbuild/stl_base/xmt0/dirs.proj +++ b/stl/msbuild/stl_base/xmt0/dirs.proj @@ -7,8 +7,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - + + diff --git a/stl/msbuild/stl_base/xmt0/libcpmt_kernel32/libcpmt.nativeproj b/stl/msbuild/stl_base/xmt0/libcpmt_kernel32/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmt0/libcpmt_kernel32/libcpmt.nativeproj rename to stl/msbuild/stl_base/xmt0/libcpmt_kernel32/libcpmt.vcxproj index ca4a6a907d5..10246a5ca8e 100644 --- a/stl/msbuild/stl_base/xmt0/libcpmt_kernel32/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/xmt0/libcpmt_kernel32/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {C9715C5F-41D3-472B-AC8D-4E374105FD6B} - false + true diff --git a/stl/msbuild/stl_base/xmt0/libcpmt_onecore/libcpmt.nativeproj b/stl/msbuild/stl_base/xmt0/libcpmt_onecore/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmt0/libcpmt_onecore/libcpmt.nativeproj rename to stl/msbuild/stl_base/xmt0/libcpmt_onecore/libcpmt.vcxproj index 8d4a6f2ae9b..630f208c35c 100644 --- a/stl/msbuild/stl_base/xmt0/libcpmt_onecore/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/xmt0/libcpmt_onecore/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {5B4429AE-5436-4C16-A6D6-998D76182CF1} - false + true diff --git a/stl/msbuild/stl_base/xmt1/dirs.proj b/stl/msbuild/stl_base/xmt1/dirs.proj index c50f9e8f604..68f29ec0dd0 100644 --- a/stl/msbuild/stl_base/xmt1/dirs.proj +++ b/stl/msbuild/stl_base/xmt1/dirs.proj @@ -7,8 +7,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - + + diff --git a/stl/msbuild/stl_base/xmt1/libcpmt_kernel32/libcpmt.nativeproj b/stl/msbuild/stl_base/xmt1/libcpmt_kernel32/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmt1/libcpmt_kernel32/libcpmt.nativeproj rename to stl/msbuild/stl_base/xmt1/libcpmt_kernel32/libcpmt.vcxproj index c66f2134d67..da123621254 100644 --- a/stl/msbuild/stl_base/xmt1/libcpmt_kernel32/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/xmt1/libcpmt_kernel32/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {C5C4581F-36C6-4327-BB54-6C1DFF52A60F} - false + true diff --git a/stl/msbuild/stl_base/xmt1/libcpmt_onecore/libcpmt.nativeproj b/stl/msbuild/stl_base/xmt1/libcpmt_onecore/libcpmt.vcxproj similarity index 91% rename from stl/msbuild/stl_base/xmt1/libcpmt_onecore/libcpmt.nativeproj rename to stl/msbuild/stl_base/xmt1/libcpmt_onecore/libcpmt.vcxproj index d806c728cde..f44707f7775 100644 --- a/stl/msbuild/stl_base/xmt1/libcpmt_onecore/libcpmt.nativeproj +++ b/stl/msbuild/stl_base/xmt1/libcpmt_onecore/libcpmt.vcxproj @@ -6,7 +6,7 @@ --> {4B156573-7D78-4FDA-B365-320A91AE8916} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/md/dirs.proj b/stl/msbuild/stl_codecvt_ids/md/dirs.proj index 32aaaec9d3e..ce06a7e913f 100644 --- a/stl/msbuild/stl_codecvt_ids/md/dirs.proj +++ b/stl/msbuild/stl_codecvt_ids/md/dirs.proj @@ -7,10 +7,10 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - - + + + + diff --git a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_app/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_app/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_app/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_app/msvcp_codecvt_ids.vcxproj index a38414ef804..2bd0066c351 100644 --- a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_app/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_app/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {CD1E3105-704A-4D91-B49A-4D6E96546ED5} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.vcxproj index 7445371ae5e..186b459227f 100644 --- a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {ED7C0741-B3D2-4EAD-AA7E-BDF1B0948ECC} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.vcxproj index 6250a475250..389b51517c7 100644 --- a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {5F6F2FF5-EFED-4CF7-8F44-810DB15F32CD} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.vcxproj index 1d04a54326f..369f4e5838f 100644 --- a/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/md/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {32352E48-0D6E-4BCA-935A-76DAFDD4239D} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/msvcp_codecvt_ids.settings.targets b/stl/msbuild/stl_codecvt_ids/msvcp_codecvt_ids.settings.targets index eaf3de6fd1a..a93fb6d1c47 100644 --- a/stl/msbuild/stl_codecvt_ids/msvcp_codecvt_ids.settings.targets +++ b/stl/msbuild/stl_codecvt_ids/msvcp_codecvt_ids.settings.targets @@ -6,6 +6,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> DynamicLibrary + true @@ -32,7 +33,6 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception $(ClDefines);_CRT_APP false - true $(IntermediateOutputDirectory) $(CrtBuildDir)\msvcprt$(BuildSuffix)_codecvt_ids.$(MsvcpFlavor).import_only.lib $(LibOutputFileName).$(MsvcpFlavor) @@ -64,7 +64,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - + diff --git a/stl/msbuild/stl_codecvt_ids/stl_codecvt_ids.files.settings.targets b/stl/msbuild/stl_codecvt_ids/stl_codecvt_ids.files.settings.targets index a9afaed5818..be3f30fac89 100644 --- a/stl/msbuild/stl_codecvt_ids/stl_codecvt_ids.files.settings.targets +++ b/stl/msbuild/stl_codecvt_ids/stl_codecvt_ids.files.settings.targets @@ -6,16 +6,8 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception --> - - nativecpp - - - nativecpp - + + diff --git a/stl/msbuild/stl_codecvt_ids/xmd/dirs.proj b/stl/msbuild/stl_codecvt_ids/xmd/dirs.proj index 169195af42b..5d2cb21ae2e 100644 --- a/stl/msbuild/stl_codecvt_ids/xmd/dirs.proj +++ b/stl/msbuild/stl_codecvt_ids/xmd/dirs.proj @@ -9,13 +9,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - + + + - + diff --git a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_app/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_app/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_app/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_app/msvcp_codecvt_ids.vcxproj index cc570ae8270..bed1e51445a 100644 --- a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_app/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_app/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {53AB0179-49FF-4620-9D42-45BD8ED71EA8} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.vcxproj index fcad6e03f57..d4a2696ec72 100644 --- a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_kernel32/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {9D9D5B21-5342-4726-AA4F-ACDF4D028F28} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.vcxproj index 90ee84d6455..948d4e91a41 100644 --- a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_netfx/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {D561DC89-A909-478B-8566-41640F9F5B53} - false + true diff --git a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.nativeproj b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.vcxproj similarity index 91% rename from stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.nativeproj rename to stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.vcxproj index 6c98dc33517..ee3de8af35d 100644 --- a/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.nativeproj +++ b/stl/msbuild/stl_codecvt_ids/xmd/msvcp_codecvt_ids_onecore/msvcp_codecvt_ids.vcxproj @@ -6,7 +6,7 @@ --> {10C04DBD-4EB2-4590-BC8D-25DBA780905C} - false + true diff --git a/stl/msbuild/stl_post/md/dirs.proj b/stl/msbuild/stl_post/md/dirs.proj index d70ce8704ac..c595b67cdfb 100644 --- a/stl/msbuild/stl_post/md/dirs.proj +++ b/stl/msbuild/stl_post/md/dirs.proj @@ -7,10 +7,10 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - - + + + + diff --git a/stl/msbuild/stl_post/md/msvcp_post_app/msvcp_post.nativeproj b/stl/msbuild/stl_post/md/msvcp_post_app/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/md/msvcp_post_app/msvcp_post.nativeproj rename to stl/msbuild/stl_post/md/msvcp_post_app/msvcp_post.vcxproj index 343ac0feb7f..8398f17144a 100644 --- a/stl/msbuild/stl_post/md/msvcp_post_app/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/md/msvcp_post_app/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {0E89DF6E-E7BA-44A1-841E-E6310F470211} - false + true diff --git a/stl/msbuild/stl_post/md/msvcp_post_kernel32/msvcp_post.nativeproj b/stl/msbuild/stl_post/md/msvcp_post_kernel32/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/md/msvcp_post_kernel32/msvcp_post.nativeproj rename to stl/msbuild/stl_post/md/msvcp_post_kernel32/msvcp_post.vcxproj index 7c1f17a2029..8656f630fc0 100644 --- a/stl/msbuild/stl_post/md/msvcp_post_kernel32/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/md/msvcp_post_kernel32/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {4BC58285-8BF8-4362-BE62-38CCBB34EA57} - false + true diff --git a/stl/msbuild/stl_post/md/msvcp_post_netcore/msvcp_post.nativeproj b/stl/msbuild/stl_post/md/msvcp_post_netcore/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/md/msvcp_post_netcore/msvcp_post.nativeproj rename to stl/msbuild/stl_post/md/msvcp_post_netcore/msvcp_post.vcxproj index b2c42ef1d6c..c12b791d5da 100644 --- a/stl/msbuild/stl_post/md/msvcp_post_netcore/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/md/msvcp_post_netcore/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {F6BF440E-AA43-48D1-A7BF-53ED43ED2C6F} - false + true diff --git a/stl/msbuild/stl_post/md/msvcp_post_netfx/msvcp_post.nativeproj b/stl/msbuild/stl_post/md/msvcp_post_netfx/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/md/msvcp_post_netfx/msvcp_post.nativeproj rename to stl/msbuild/stl_post/md/msvcp_post_netfx/msvcp_post.vcxproj index fbc0fe20069..8b2d4715ed5 100644 --- a/stl/msbuild/stl_post/md/msvcp_post_netfx/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/md/msvcp_post_netfx/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {9EAC2409-0DE5-465D-BEB2-08DD9221CDC7} - false + true diff --git a/stl/msbuild/stl_post/md/msvcp_post_onecore/msvcp_post.nativeproj b/stl/msbuild/stl_post/md/msvcp_post_onecore/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/md/msvcp_post_onecore/msvcp_post.nativeproj rename to stl/msbuild/stl_post/md/msvcp_post_onecore/msvcp_post.vcxproj index b75e4cb3a1b..581a198825c 100644 --- a/stl/msbuild/stl_post/md/msvcp_post_onecore/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/md/msvcp_post_onecore/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {8A1D8A23-DBBA-4356-816E-344F7956D497} - false + true diff --git a/stl/msbuild/stl_post/msvcp_post.settings.targets b/stl/msbuild/stl_post/msvcp_post.settings.targets index 8ed7816451d..7a2384cb36a 100644 --- a/stl/msbuild/stl_post/msvcp_post.settings.targets +++ b/stl/msbuild/stl_post/msvcp_post.settings.targets @@ -44,15 +44,15 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + Include="$(CrtRoot)\github\stl\msbuild\stl_base\$(CrtBuildModel)\msvcp_$(MsvcpFlavor)\msvcp.vcxproj"/> + Include="$(CrtRoot)\github\stl\msbuild\stl_1\$(CrtBuildModel)\msvcp_1_$(MsvcpFlavor)\msvcp_1.vcxproj"/> + Include="$(CrtRoot)\github\stl\msbuild\stl_2\$(CrtBuildModel)\msvcp_2_$(MsvcpFlavor)\msvcp_2.vcxproj"/> + Include="$(CrtRoot)\github\stl\msbuild\stl_codecvt_ids\$(CrtBuildModel)\msvcp_codecvt_ids_$(MsvcpFlavor)\msvcp_codecvt_ids.vcxproj"/> + Include="$(CrtRoot)\github\stl\msbuild\stl_atomic_wait\$(CrtBuildModel)\msvcp_atomic_wait_$(MsvcpFlavor)\msvcp_atomic_wait.vcxproj"/> false diff --git a/stl/msbuild/stl_post/xmd/dirs.proj b/stl/msbuild/stl_post/xmd/dirs.proj index e188414dbdd..f29b09dd84c 100644 --- a/stl/msbuild/stl_post/xmd/dirs.proj +++ b/stl/msbuild/stl_post/xmd/dirs.proj @@ -9,13 +9,13 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - - - + + + - + diff --git a/stl/msbuild/stl_post/xmd/msvcp_post_app/msvcp_post.nativeproj b/stl/msbuild/stl_post/xmd/msvcp_post_app/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/xmd/msvcp_post_app/msvcp_post.nativeproj rename to stl/msbuild/stl_post/xmd/msvcp_post_app/msvcp_post.vcxproj index 41a6d6a5a54..02b2a4c2e9a 100644 --- a/stl/msbuild/stl_post/xmd/msvcp_post_app/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/xmd/msvcp_post_app/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {687A5106-D6CE-4BC4-8BA1-27D84F895FF5} - false + true diff --git a/stl/msbuild/stl_post/xmd/msvcp_post_kernel32/msvcp_post.nativeproj b/stl/msbuild/stl_post/xmd/msvcp_post_kernel32/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/xmd/msvcp_post_kernel32/msvcp_post.nativeproj rename to stl/msbuild/stl_post/xmd/msvcp_post_kernel32/msvcp_post.vcxproj index 16c5436d376..a428096e365 100644 --- a/stl/msbuild/stl_post/xmd/msvcp_post_kernel32/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/xmd/msvcp_post_kernel32/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {13998FA0-CBA7-4303-9212-879E17F69D53} - false + true diff --git a/stl/msbuild/stl_post/xmd/msvcp_post_netcore/msvcp_post.nativeproj b/stl/msbuild/stl_post/xmd/msvcp_post_netcore/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/xmd/msvcp_post_netcore/msvcp_post.nativeproj rename to stl/msbuild/stl_post/xmd/msvcp_post_netcore/msvcp_post.vcxproj index 27de5bc5f5e..47c2a381edd 100644 --- a/stl/msbuild/stl_post/xmd/msvcp_post_netcore/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/xmd/msvcp_post_netcore/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {EC379541-9453-4884-9250-3CDBA73E2C10} - false + true diff --git a/stl/msbuild/stl_post/xmd/msvcp_post_netfx/msvcp_post.nativeproj b/stl/msbuild/stl_post/xmd/msvcp_post_netfx/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/xmd/msvcp_post_netfx/msvcp_post.nativeproj rename to stl/msbuild/stl_post/xmd/msvcp_post_netfx/msvcp_post.vcxproj index 2c0a3cc65ff..7b1a34aa67d 100644 --- a/stl/msbuild/stl_post/xmd/msvcp_post_netfx/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/xmd/msvcp_post_netfx/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {9FAAE4A7-D6CE-48C8-8B80-6EA96F508545} - false + true diff --git a/stl/msbuild/stl_post/xmd/msvcp_post_onecore/msvcp_post.nativeproj b/stl/msbuild/stl_post/xmd/msvcp_post_onecore/msvcp_post.vcxproj similarity index 91% rename from stl/msbuild/stl_post/xmd/msvcp_post_onecore/msvcp_post.nativeproj rename to stl/msbuild/stl_post/xmd/msvcp_post_onecore/msvcp_post.vcxproj index fd55615865a..856474e3745 100644 --- a/stl/msbuild/stl_post/xmd/msvcp_post_onecore/msvcp_post.nativeproj +++ b/stl/msbuild/stl_post/xmd/msvcp_post_onecore/msvcp_post.vcxproj @@ -6,7 +6,7 @@ --> {8DA22F7E-CE13-4885-AD01-D97B180E815C} - false + true diff --git a/stl/src/cerr.cpp b/stl/src/cerr.cpp index 3a5f23ce49d..27439ee7b41 100644 --- a/stl/src/cerr.cpp +++ b/stl/src/cerr.cpp @@ -18,7 +18,6 @@ __PURE_APPDOMAIN_GLOBAL static filebuf ferr(stderr); #if defined(_M_CEE_PURE) __PURE_APPDOMAIN_GLOBAL extern ostream cerr(&ferr); - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT ostream cerr(&ferr); #endif // ^^^ !defined(_M_CEE_PURE) ^^^ diff --git a/stl/src/cin.cpp b/stl/src/cin.cpp index 6c7b4679817..63c03519bea 100644 --- a/stl/src/cin.cpp +++ b/stl/src/cin.cpp @@ -18,7 +18,6 @@ __PURE_APPDOMAIN_GLOBAL static filebuf fin(stdin); #if defined(_M_CEE_PURE) __PURE_APPDOMAIN_GLOBAL extern istream cin(&fin); - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT istream cin(&fin); #endif // ^^^ !defined(_M_CEE_PURE) ^^^ diff --git a/stl/src/clog.cpp b/stl/src/clog.cpp index e29b72ec85c..5a1d22a0c6b 100644 --- a/stl/src/clog.cpp +++ b/stl/src/clog.cpp @@ -20,7 +20,6 @@ __PURE_APPDOMAIN_GLOBAL static filebuf flog(stderr); #if defined(_M_CEE_PURE) __PURE_APPDOMAIN_GLOBAL extern ostream clog(&flog); - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT ostream clog(&flog); #endif // ^^^ !defined(_M_CEE_PURE) ^^^ diff --git a/stl/src/cond.cpp b/stl/src/cond.cpp index 107e5865d45..114475ee3ae 100644 --- a/stl/src/cond.cpp +++ b/stl/src/cond.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// condition variable functions - #include #include #include @@ -13,7 +11,7 @@ extern "C" { -struct _Cnd_internal_imp_t { // condition variable implementation for ConcRT +struct _Cnd_internal_imp_t { typename std::_Aligned_storage<_Cnd_internal_imp_size, _Cnd_internal_imp_alignment>::type cv; [[nodiscard]] Concurrency::details::stl_condition_variable_win7* _get_cv() noexcept { diff --git a/stl/src/cout.cpp b/stl/src/cout.cpp index 02ab1f7eb27..3a4058cd691 100644 --- a/stl/src/cout.cpp +++ b/stl/src/cout.cpp @@ -18,7 +18,6 @@ __PURE_APPDOMAIN_GLOBAL static filebuf fout(stdout); #if defined(_M_CEE_PURE) __PURE_APPDOMAIN_GLOBAL extern ostream cout(&fout); - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT ostream cout(&fout); #endif // ^^^ !defined(_M_CEE_PURE) ^^^ diff --git a/stl/src/cthread.cpp b/stl/src/cthread.cpp index ba3b2d81cd4..141fbe9d4ac 100644 --- a/stl/src/cthread.cpp +++ b/stl/src/cthread.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// thread functions - #include #include #include diff --git a/stl/src/excptptr.cpp b/stl/src/excptptr.cpp index 723666d2cc3..830cb65a940 100644 --- a/stl/src/excptptr.cpp +++ b/stl/src/excptptr.cpp @@ -499,7 +499,7 @@ _CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL __ExceptionPtrCurrentException(void* const auto _PType = reinterpret_cast( static_cast(_CatchableTypeArray->arrayOfCatchableTypes[0]) + _ThrowImageBase); #else // ^^^ _EH_RELATIVE_TYPEINFO / !_EH_RELATIVE_TYPEINFO vvv - const auto _PType = _PThrow->pCatchableTypeArray->arrayOfCatchableTypes[0]; + const auto _PType = _PThrow->pCatchableTypeArray->arrayOfCatchableTypes[0]; #endif // ^^^ !_EH_RELATIVE_TYPEINFO ^^^ // Alloc memory on stack for exception object. This might cause a stack overflow SEH exception, or another C++ diff --git a/stl/src/filesystem.cpp b/stl/src/filesystem.cpp index 43b0c1b2842..5fdde72e6b7 100644 --- a/stl/src/filesystem.cpp +++ b/stl/src/filesystem.cpp @@ -599,7 +599,6 @@ _Success_(return == __std_win_error::_Success) __std_win_error } if (_Last_error == __std_win_error::_Access_denied && _Able_to_change_attributes) { - FILE_BASIC_INFO _Basic_info; if (!GetFileInformationByHandleEx(_Handle._Get(), FileBasicInfo, &_Basic_info, sizeof(_Basic_info))) { return {false, __std_win_error{GetLastError()}}; diff --git a/stl/src/init_locks.hpp b/stl/src/init_locks.hpp index c121564d315..737ad5a892b 100644 --- a/stl/src/init_locks.hpp +++ b/stl/src/init_locks.hpp @@ -17,7 +17,6 @@ class _CRTIMP2_PURE_IMPORT _Init_locks { // initialize mutexes __CLR_OR_THIS_CALL ~_Init_locks() noexcept { _Init_locks_dtor(this); } - #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv __thiscall _Init_locks() noexcept; __thiscall ~_Init_locks() noexcept; diff --git a/stl/src/locale0.cpp b/stl/src/locale0.cpp index 34029c23a70..e25897acc9a 100644 --- a/stl/src/locale0.cpp +++ b/stl/src/locale0.cpp @@ -159,7 +159,7 @@ _MRTIMP2_PURE const locale& __CLRCALL_PURE_OR_CDECL locale::classic() { // get r _MRTIMP2_PURE locale __CLRCALL_PURE_OR_CDECL locale::empty() { // make empty transparent locale _Init(); - return locale{_Locimp::_New_Locimp(true)}; + return locale{_Secret_locale_construct_tag{}, _Locimp::_New_Locimp(true)}; } _MRTIMP2_PURE locale::_Locimp* __CLRCALL_PURE_OR_CDECL locale::_Init(bool _Do_incref) { // setup global and "C" locales @@ -176,7 +176,7 @@ _MRTIMP2_PURE locale::_Locimp* __CLRCALL_PURE_OR_CDECL locale::_Init(bool _Do_in // set classic to match ptr->_Incref(); - ::new (&classic_locale) locale{ptr}; + ::new (&classic_locale) locale{_Secret_locale_construct_tag{}, ptr}; #if defined(_M_CEE_PURE) locale::_Locimp::_Clocptr = ptr; #else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv diff --git a/stl/src/mutex.cpp b/stl/src/mutex.cpp index 5d20b560982..884b4f32f8d 100644 --- a/stl/src/mutex.cpp +++ b/stl/src/mutex.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// mutex functions - #include #include #include diff --git a/stl/src/sharedmutex.cpp b/stl/src/sharedmutex.cpp index 678df6eeaca..64f50fe7422 100644 --- a/stl/src/sharedmutex.cpp +++ b/stl/src/sharedmutex.cpp @@ -6,7 +6,6 @@ // these declarations must be in sync with those in xthreads.h extern "C" { - using _Smtx_t = void*; static_assert(sizeof(_Smtx_t) == sizeof(SRWLOCK), "_Smtx_t must be the same size as SRWLOCK."); diff --git a/stl/src/thread0.cpp b/stl/src/thread0.cpp index 804ee3e30ff..23b098d3910 100644 --- a/stl/src/thread0.cpp +++ b/stl/src/thread0.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// thread support functions - #include #include #include diff --git a/stl/src/xcosh.cpp b/stl/src/xcosh.cpp index f890f5fbc59..7708aa73a15 100644 --- a/stl/src/xcosh.cpp +++ b/stl/src/xcosh.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Cosh function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xexp.cpp b/stl/src/xexp.cpp index 4c359b0ca2c..ff64401063a 100644 --- a/stl/src/xexp.cpp +++ b/stl/src/xexp.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Exp function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xfcosh.cpp b/stl/src/xfcosh.cpp index f1c3ab3c3ce..5fb3ce51814 100644 --- a/stl/src/xfcosh.cpp +++ b/stl/src/xfcosh.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _FCosh function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xferaise.cpp b/stl/src/xferaise.cpp index 7f6e4ed0727..b973fc23824 100644 --- a/stl/src/xferaise.cpp +++ b/stl/src/xferaise.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Feraise function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xfexp.cpp b/stl/src/xfexp.cpp index ffc990b5307..2b3240ca792 100644 --- a/stl/src/xfexp.cpp +++ b/stl/src/xfexp.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _FExp function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xfsinh.cpp b/stl/src/xfsinh.cpp index 5f9e82aba06..4b86173e3c5 100644 --- a/stl/src/xfsinh.cpp +++ b/stl/src/xfsinh.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _FSinh function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xlcosh.cpp b/stl/src/xlcosh.cpp index d713795dd16..b5bfcfa2b8b 100644 --- a/stl/src/xlcosh.cpp +++ b/stl/src/xlcosh.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _LCosh function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xlexp.cpp b/stl/src/xlexp.cpp index 1d4788be6fc..b47a4dbbb39 100644 --- a/stl/src/xlexp.cpp +++ b/stl/src/xlexp.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _LExp function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xlpoly.cpp b/stl/src/xlpoly.cpp index ce1e35503ea..ef7001ecff3 100644 --- a/stl/src/xlpoly.cpp +++ b/stl/src/xlpoly.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _LPoly function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xlsinh.cpp b/stl/src/xlsinh.cpp index 3a57f8f0e42..6b1bc9ff87c 100644 --- a/stl/src/xlsinh.cpp +++ b/stl/src/xlsinh.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _LSinh function - #include #include "xmath.hpp" diff --git a/stl/src/xnotify.cpp b/stl/src/xnotify.cpp index 57fc2c5ce16..1b6e8fcbdbf 100644 --- a/stl/src/xnotify.cpp +++ b/stl/src/xnotify.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// thread exit notification functions - #include #include diff --git a/stl/src/xpoly.cpp b/stl/src/xpoly.cpp index c6005089f02..32360f5f0c6 100644 --- a/stl/src/xpoly.cpp +++ b/stl/src/xpoly.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Poly function - #include "xmath.hpp" _EXTERN_C_UNLESS_PURE diff --git a/stl/src/xsinh.cpp b/stl/src/xsinh.cpp index e5d22f69834..e9075ec6b4b 100644 --- a/stl/src/xsinh.cpp +++ b/stl/src/xsinh.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Sinh function - #include #include "xmath.hpp" diff --git a/stl/src/xstod.cpp b/stl/src/xstod.cpp index 7b1ef59544c..519115f6234 100644 --- a/stl/src/xstod.cpp +++ b/stl/src/xstod.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stod function - #include // include first, for native shared #include diff --git a/stl/src/xstof.cpp b/stl/src/xstof.cpp index be415f597e7..410e5c8e35b 100644 --- a/stl/src/xstof.cpp +++ b/stl/src/xstof.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stof function - #include // include first, for native shared #include diff --git a/stl/src/xstoflt.cpp b/stl/src/xstoflt.cpp index 4322cc1a7de..124935934c9 100644 --- a/stl/src/xstoflt.cpp +++ b/stl/src/xstoflt.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stoflt function - #include #include #include diff --git a/stl/src/xstol.cpp b/stl/src/xstol.cpp index c6ca2a4e7bd..6a4507dbc95 100644 --- a/stl/src/xstol.cpp +++ b/stl/src/xstol.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stolx function - #include #include diff --git a/stl/src/xstold.cpp b/stl/src/xstold.cpp index 38834756ed9..54f4df240e9 100644 --- a/stl/src/xstold.cpp +++ b/stl/src/xstold.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stold function - #include // include first, for native shared #include diff --git a/stl/src/xstoll.cpp b/stl/src/xstoll.cpp index 5843f626c78..4eaed74c262 100644 --- a/stl/src/xstoll.cpp +++ b/stl/src/xstoll.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stoll function - #include #include @@ -48,7 +46,8 @@ _CRTIMP2_PURE long long __CLRCALL_PURE_OR_CDECL _Stollx(const char* s, char** en return static_cast(sign == '-' ? 0 - x : x); } -_CRTIMP2_PURE long long(__CLRCALL_PURE_OR_CDECL _Stoll)(const char* s, char** endptr, int base) noexcept { +// TRANSITION, ABI: preserved for binary compatibility +_CRTIMP2_PURE long long __CLRCALL_PURE_OR_CDECL _Stoll(const char* s, char** endptr, int base) noexcept { // convert string, discard error code return _Stollx(s, endptr, base, nullptr); } diff --git a/stl/src/xstopfx.cpp b/stl/src/xstopfx.cpp index 6218ac39ba9..56947eaf369 100644 --- a/stl/src/xstopfx.cpp +++ b/stl/src/xstopfx.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stopfx function - #include #include "xmath.hpp" diff --git a/stl/src/xstoul.cpp b/stl/src/xstoul.cpp index 272a6f4db0e..50789659027 100644 --- a/stl/src/xstoul.cpp +++ b/stl/src/xstoul.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stoul function - #include #include @@ -109,6 +107,7 @@ _CRTIMP2_PURE unsigned long __CLRCALL_PURE_OR_CDECL _Stoulx( return x; } +// TRANSITION, ABI: preserved for binary compatibility _CRTIMP2_PURE unsigned long __CLRCALL_PURE_OR_CDECL _Stoul(const char* s, char** endptr, int base) noexcept { // convert string, discard error code return _Stoulx(s, endptr, base, nullptr); diff --git a/stl/src/xstoull.cpp b/stl/src/xstoull.cpp index 6a7a11af551..5d058e9d025 100644 --- a/stl/src/xstoull.cpp +++ b/stl/src/xstoull.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stoull function - #include #include @@ -107,6 +105,7 @@ _CRTIMP2_PURE unsigned long long __CLRCALL_PURE_OR_CDECL _Stoullx( return x; } +// TRANSITION, ABI: preserved for binary compatibility _CRTIMP2_PURE unsigned long long __CLRCALL_PURE_OR_CDECL _Stoull(const char* s, char** endptr, int base) noexcept { // convert string, discard error code return _Stoullx(s, endptr, base, nullptr); diff --git a/stl/src/xstoxflt.cpp b/stl/src/xstoxflt.cpp index a898f16b587..64b11ce188d 100644 --- a/stl/src/xstoxflt.cpp +++ b/stl/src/xstoxflt.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _Stoxflt function - #include #include #include diff --git a/stl/src/xthrow.cpp b/stl/src/xthrow.cpp index a9afc6054d6..2ec0a3eebac 100644 --- a/stl/src/xthrow.cpp +++ b/stl/src/xthrow.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// exception handling support functions - #include #include #include diff --git a/stl/src/xwcsxfrm.cpp b/stl/src/xwcsxfrm.cpp index 175677cd914..417545e1f85 100644 --- a/stl/src/xwcsxfrm.cpp +++ b/stl/src/xwcsxfrm.cpp @@ -64,7 +64,6 @@ _CRTIMP2_PURE size_t __CLRCALL_PURE_OR_CDECL _Wcsxfrm(_Out_writes_(end1 - string } size = n2; } else { - // When using LCMAP_SORTKEY, LCMapStringW handles BYTES not wide // chars. We use a byte buffer to hold bytes and then convert the // byte string to a wide char string and return this so it can be diff --git a/stl/src/xwstod.cpp b/stl/src/xwstod.cpp index 01b98439a5c..cac719244e5 100644 --- a/stl/src/xwstod.cpp +++ b/stl/src/xwstod.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _WStod function - #include #include diff --git a/stl/src/xwstof.cpp b/stl/src/xwstof.cpp index cfed6e8a3c9..4861e203527 100644 --- a/stl/src/xwstof.cpp +++ b/stl/src/xwstof.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _WStof function - #include #include "xmath.hpp" diff --git a/stl/src/xwstoflt.cpp b/stl/src/xwstoflt.cpp index ea12f36b945..c5c70cb2264 100644 --- a/stl/src/xwstoflt.cpp +++ b/stl/src/xwstoflt.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _WStoflt function - #include #include #include diff --git a/stl/src/xwstold.cpp b/stl/src/xwstold.cpp index be483a7cbcd..142bea60535 100644 --- a/stl/src/xwstold.cpp +++ b/stl/src/xwstold.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _WStold function - #include #include "xmath.hpp" diff --git a/stl/src/xwstopfx.cpp b/stl/src/xwstopfx.cpp index c2f52b9d599..29f15fcc79f 100644 --- a/stl/src/xwstopfx.cpp +++ b/stl/src/xwstopfx.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _WStopfx function - #include #include "xmath.hpp" diff --git a/stl/src/xwstoxfl.cpp b/stl/src/xwstoxfl.cpp index 9ca5c4b803e..116e579cc6d 100644 --- a/stl/src/xwstoxfl.cpp +++ b/stl/src/xwstoxfl.cpp @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// _WStoxflt function - #include #include #include diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index c681105abc2..0515ffca980 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -905,7 +905,6 @@ std/containers/associative/map/map.cons/deduct_const.pass.cpp FAIL std/containers/associative/multimap/multimap.cons/deduct.pass.cpp FAIL std/containers/associative/multimap/multimap.cons/deduct_const.pass.cpp FAIL std/containers/container.adaptors/priority.queue/priqueue.cons/deduct.pass.cpp FAIL -std/containers/sequences/list/list.cons/deduct.pass.cpp FAIL std/containers/unord/unord.map/unord.map.cnstr/deduct.pass.cpp FAIL std/containers/unord/unord.map/unord.map.cnstr/deduct_const.pass.cpp FAIL std/containers/unord/unord.multimap/unord.multimap.cnstr/deduct.pass.cpp FAIL @@ -943,11 +942,6 @@ std/utilities/memory/allocator.traits/allocator.traits.members/destroy.pass.cpp # Not analyzed. Error mentions allocator. std/utilities/memory/specialized.algorithms/specialized.construct/construct_at.pass.cpp FAIL -# Not analyzed. Looks like deduction guide SFINAE failure. -std/containers/sequences/deque/deque.cons/deduct.pass.cpp FAIL -std/containers/sequences/forwardlist/forwardlist.cons/deduct.pass.cpp FAIL -std/containers/sequences/vector/vector.cons/deduct.pass.cpp FAIL - # Not analyzed. Seems to force a sign conversion error? std/iterators/iterator.primitives/iterator.operations/advance.pass.cpp SKIPPED diff --git a/tests/libcxx/usual_matrix.lst b/tests/libcxx/usual_matrix.lst index ea6aeb7e3ab..a6642320f3a 100644 --- a/tests/libcxx/usual_matrix.lst +++ b/tests/libcxx/usual_matrix.lst @@ -3,8 +3,8 @@ RUNALL_INCLUDE ..\universal_prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MTd /std:c++latest /permissive- /utf-8 /FImsvc_stdlib_force_include.h /wd4643 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER" +* PM_CL="/EHsc /MTd /std:c++latest /permissive- /utf-8 /FImsvc_stdlib_force_include.h /wd4643 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER" RUNALL_CROSSLIST -* PM_CL="/analyze:autolog- /Zc:preprocessor /wd6262" +PM_CL="/analyze:autolog- /Zc:preprocessor /wd6262" ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call" diff --git a/tests/std/include/test_header_units_and_modules.hpp b/tests/std/include/test_header_units_and_modules.hpp index f6d35c37694..633542387e5 100644 --- a/tests/std/include/test_header_units_and_modules.hpp +++ b/tests/std/include/test_header_units_and_modules.hpp @@ -404,12 +404,35 @@ void test_map() { void test_mdspan() { using namespace std; puts("Testing ."); - int arr[] = {10, 0, 0, 0, 20, 0, 0, 0, 30}; - layout_right::mapping> mp; - assert(arr[mp(0, 0)] == 10); - assert(arr[mp(1, 1)] == 20); - assert(arr[mp(2, 2)] == 30); - // TRANSITION, test std::mdspan too (DevCom-10359857) + + { + int arr[] = {10, 0, 0, 0, 20, 0, 0, 0, 30}; + layout_right::mapping> mp; + assert(arr[mp(0, 0)] == 10); + assert(arr[mp(1, 1)] == 20); + assert(arr[mp(2, 2)] == 30); + } + + { + array arr{// + 50, 60, 70, 80, 90, // + 51, 61, 71, 81, 91, // + 52, 62, 72, 82, 92}; + + mdspan md{arr.data(), extents{}}; + + static_assert(is_same_v>>); + + assert((md[array{0, 0}] == 50)); + assert((md[array{0, 4}] == 90)); + assert((md[array{1, 1}] == 61)); + assert((md[array{2, 0}] == 52)); + assert((md[array{2, 4}] == 92)); + + md[array{2, 4}] = 1729; + + assert(arr.back() == 1729); + } } #endif // TEST_STANDARD >= 23 diff --git a/tests/std/test.lst b/tests/std/test.lst index 0f9cbd8e229..9320b475151 100644 --- a/tests/std/test.lst +++ b/tests/std/test.lst @@ -603,6 +603,7 @@ tests\P2286R8_text_formatting_escaping tests\P2286R8_text_formatting_escaping_legacy_text_encoding tests\P2286R8_text_formatting_escaping_utf8 tests\P2286R8_text_formatting_formattable +tests\P2286R8_text_formatting_vector_bool_reference tests\P2302R4_ranges_alg_contains tests\P2302R4_ranges_alg_contains_subrange tests\P2321R2_proxy_reference @@ -732,3 +733,4 @@ tests\VSO_0849827_multicontainer_emplace_hint_position tests\VSO_0938757_attribute_order tests\VSO_0961751_hash_range_erase tests\VSO_0971246_legacy_await_headers +tests\VSO_1925201_iter_traits diff --git a/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp b/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp index b46ab51dcd1..9ee387fae6c 100644 --- a/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp +++ b/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp @@ -1910,90 +1910,91 @@ void test_bind() { { #ifndef _M_CEE_PURE - {auto lambda = [](int x, int y, int&& z) { return x * 100 + y * 10 + z; }; + { + auto lambda = [](int x, int y, int&& z) { return x * 100 + y * 10 + z; }; - auto b = bind(lambda, 7, _1, _2); + auto b = bind(lambda, 7, _1, _2); - function f(b); + function f(b); - assert(f(8, 9) == 789); -} - -{ - struct Thingy { - int mf(int&& n) { - return n * 5; + assert(f(8, 9) == 789); } - }; - Thingy t; + { + struct Thingy { + int mf(int&& n) { + return n * 5; + } + }; - auto b = bind(&Thingy::mf, t, _1); + Thingy t; - assert(b(7) == 35); -} + auto b = bind(&Thingy::mf, t, _1); -{ - auto consume_up = [](unique_ptr&& up, int n) { return *up / n; }; + assert(b(7) == 35); + } - auto b = bind(consume_up, _1, 3); + { + auto consume_up = [](unique_ptr&& up, int n) { return *up / n; }; - assert(b(make_unique(1000)) == 333); -} + auto b = bind(consume_up, _1, 3); + + assert(b(make_unique(1000)) == 333); + } #endif // _M_CEE_PURE -} + } -// Test DevDiv-487679 " bind: MSVS 2012 C++ std::bind illegal indirection compiler error". -// Test DevDiv-617421 " bind: Bind failing to compile with a vector of functions". -{ - struct BaseFunctor { - int operator()(int n) const { - return n + 5; - } - }; + // Test DevDiv-487679 " bind: MSVS 2012 C++ std::bind illegal indirection compiler error". + // Test DevDiv-617421 " bind: Bind failing to compile with a vector of functions". + { + struct BaseFunctor { + int operator()(int n) const { + return n + 5; + } + }; - struct DerivedFunctor : BaseFunctor {}; + struct DerivedFunctor : BaseFunctor {}; - auto b = bind(&DerivedFunctor::operator(), _1, 200); + auto b = bind(&DerivedFunctor::operator(), _1, 200); - DerivedFunctor df; + DerivedFunctor df; - assert(b(df) == 205); -} + assert(b(df) == 205); + } -// Test DevDiv-505570 " bind: Can't bind a pointer to a data member using a pointer, smart pointer or -// iterator to the object". -{ - struct Object { - int member = 1000; - }; + // Test DevDiv-505570 " bind: Can't bind a pointer to a data member using a pointer, smart pointer or + // iterator to the object". + { + struct Object { + int member = 1000; + }; - auto pmd = &Object::member; - auto sp = make_shared(); + auto pmd = &Object::member; + auto sp = make_shared(); - auto b1 = bind(pmd, ref(*sp)); - auto b2 = bind(pmd, sp.get()); - auto b3 = bind(pmd, sp); + auto b1 = bind(pmd, ref(*sp)); + auto b2 = bind(pmd, sp.get()); + auto b3 = bind(pmd, sp); - assert(sp->member == 1000); - ++b1(); - assert(sp->member == 1001); - ++b2(); - assert(sp->member == 1002); - ++b3(); - assert(sp->member == 1003); -} + assert(sp->member == 1000); + ++b1(); + assert(sp->member == 1001); + ++b2(); + assert(sp->member == 1002); + ++b3(); + assert(sp->member == 1003); + } -// Test DevDiv-535246 " bind: Cannot call const forwarding call wrapper result of std::bind". -{ - const auto cb = bind(&quadruple, 11); + // Test DevDiv-535246 " bind: Cannot call const forwarding call wrapper result of std::bind". + { + const auto cb = bind(&quadruple, 11); - assert(cb() == 44); -} + assert(cb() == 44); + } } diff --git a/tests/std/tests/GH_000639_nvcc_include_all/env.lst b/tests/std/tests/GH_000639_nvcc_include_all/env.lst index 56940befa07..633ab107731 100644 --- a/tests/std/tests/GH_000639_nvcc_include_all/env.lst +++ b/tests/std/tests/GH_000639_nvcc_include_all/env.lst @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -* PM_COMPILER="nvcc" PM_CL="--x cu -Xcompiler -Od,-EHsc,-nologo,-W4,-WX,-openmp" +PM_COMPILER="nvcc" PM_CL="--x cu -Xcompiler -Od,-EHsc,-nologo,-W4,-WX,-openmp" RUNALL_CROSSLIST -* PM_CL="-Xcompiler -MT" -* PM_CL="--debug -Xcompiler -MTd" +PM_CL="-Xcompiler -MT" +PM_CL="--debug -Xcompiler -MTd" diff --git a/tests/std/tests/GH_000935_complex_numerical_accuracy/floating_point_utils.hpp b/tests/std/tests/GH_000935_complex_numerical_accuracy/floating_point_utils.hpp index b2c0b66cf04..153260d5bf1 100644 --- a/tests/std/tests/GH_000935_complex_numerical_accuracy/floating_point_utils.hpp +++ b/tests/std/tests/GH_000935_complex_numerical_accuracy/floating_point_utils.hpp @@ -76,7 +76,7 @@ namespace fputil { #ifdef __clang__ // TRANSITION, should be #pragma STDC FENV_ACCESS ON #else // ^^^ clang / MSVC vvv -// TRANSITION, VSO-923474 -- should be #pragma STDC FENV_ACCESS ON + // TRANSITION, VSO-923474 -- should be #pragma STDC FENV_ACCESS ON #pragma fenv_access(on) #endif // ^^^ MSVC ^^^ diff --git a/tests/std/tests/GH_000935_complex_numerical_accuracy/test.cpp b/tests/std/tests/GH_000935_complex_numerical_accuracy/test.cpp index 27fa5930eb3..3f3fa66186b 100644 --- a/tests/std/tests/GH_000935_complex_numerical_accuracy/test.cpp +++ b/tests/std/tests/GH_000935_complex_numerical_accuracy/test.cpp @@ -16,7 +16,7 @@ void test_sqrt(const rounding_mode mode) { #if FP_PRESET_FAST constexpr int ulp_tolerance = 4; #else // ^^^ fp:fast / not fp:fast vvv - const int ulp_tolerance = is_directed_rounding_mode(mode) ? 3 : 2; + const int ulp_tolerance = is_directed_rounding_mode(mode) ? 3 : 2; #endif // ^^^ not fp:fast ^^^ const auto check_result = [&](const auto& result, const auto& test_case) { diff --git a/tests/std/tests/GH_001596_adl_proof_algorithms/test.compile.pass.cpp b/tests/std/tests/GH_001596_adl_proof_algorithms/test.compile.pass.cpp index 704b13ac8bb..125a352d41c 100644 --- a/tests/std/tests/GH_001596_adl_proof_algorithms/test.compile.pass.cpp +++ b/tests/std/tests/GH_001596_adl_proof_algorithms/test.compile.pass.cpp @@ -26,6 +26,24 @@ struct tagged_equal { } }; +template +struct tagged_less { + template + constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) < std::forward(u)) { + return std::forward(t) < std::forward(u); + } +}; + +#if _HAS_CXX20 +template +struct tagged_compare_three_way { + template + constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) <=> std::forward(u)) { + return std::forward(t) <=> std::forward(u); + } +}; +#endif // _HAS_CXX20 + template struct holder { T t; @@ -48,6 +66,11 @@ using simple_truth = tagged_truth; using validator = holder*; using validating_truth = tagged_truth>; using validating_equal = tagged_equal>; +using validating_less = tagged_less>; + +#if _HAS_CXX20 +using validating_compare_three_way = tagged_compare_three_way>; +#endif // _HAS_CXX20 #if _HAS_CXX23 && defined(__cpp_lib_concepts) // TRANSITION, GH-395 using simple_left_selector = tagged_left_selector; @@ -121,6 +144,48 @@ void test_algorithms() { (void) std::search(varr, varr, varr, varr); (void) std::search(iarr, iarr, iarr, iarr, validating_equal{}); + + (void) std::remove(varr, varr, validator{}); + + (void) std::remove_if(varr, varr, simple_truth{}); + (void) std::remove_if(iarr, iarr, validating_truth{}); + + (void) std::min(+varr, +varr); + (void) std::min(+iarr, +iarr, validating_less{}); + (void) std::min({+varr, +varr}); + (void) std::min({+iarr, +iarr}, validating_less{}); + + (void) std::max(+varr, +varr); + (void) std::max(+iarr, +iarr, validating_less{}); + (void) std::max({+varr, +varr}); + (void) std::max({+iarr, +iarr}, validating_less{}); + + (void) std::minmax(+varr, +varr); + (void) std::minmax(+iarr, +iarr, validating_less{}); + (void) std::minmax({+varr, +varr}); + (void) std::minmax({+iarr, +iarr}, validating_less{}); + + (void) std::min_element(varr, varr + 1); + (void) std::min_element(iarr, iarr + 1, validating_less{}); + + (void) std::max_element(varr, varr + 1); + (void) std::max_element(iarr, iarr + 1, validating_less{}); + + (void) std::minmax_element(varr, varr + 1); + (void) std::minmax_element(iarr, iarr + 1, validating_less{}); + +#if _HAS_CXX17 + (void) std::clamp(+varr, +varr, +varr); + (void) std::clamp(+iarr, +iarr, +iarr, validating_less{}); +#endif // _HAS_CXX17 + + (void) std::lexicographical_compare(varr, varr, varr, varr); + (void) std::lexicographical_compare(iarr, iarr, iarr, iarr, validating_less{}); + +#if _HAS_CXX20 && defined(__cpp_lib_concepts) // TRANSITION, GH-395 + (void) std::lexicographical_compare_three_way(varr, varr, varr, varr); + (void) std::lexicographical_compare_three_way(iarr, iarr, iarr, iarr, validating_compare_three_way{}); +#endif // _HAS_CXX20 && defined(__cpp_lib_concepts) } #if _HAS_CXX17 @@ -185,6 +250,18 @@ void test_per_execution_policy() { (void) std::search_n(ExecutionPolicy, varr, varr, 0, validator{}); (void) std::search_n(ExecutionPolicy, iarr, iarr, 0, 0, validating_equal{}); + + (void) std::min_element(ExecutionPolicy, varr, varr + 1); + (void) std::min_element(ExecutionPolicy, iarr, iarr + 1, validating_less{}); + + (void) std::max_element(ExecutionPolicy, varr, varr + 1); + (void) std::max_element(ExecutionPolicy, iarr, iarr + 1, validating_less{}); + + (void) std::minmax_element(ExecutionPolicy, varr, varr + 1); + (void) std::minmax_element(ExecutionPolicy, iarr, iarr + 1, validating_less{}); + + (void) std::lexicographical_compare(ExecutionPolicy, varr, varr, varr, varr); + (void) std::lexicographical_compare(ExecutionPolicy, iarr, iarr, iarr, iarr, validating_less{}); } void test_parallel_algorithms() { 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 c7838e075f5..f51270fc94c 100644 --- a/tests/std/tests/GH_002030_asan_annotate_string/env.lst +++ b/tests/std/tests/GH_002030_asan_annotate_string/env.lst @@ -6,52 +6,52 @@ # TRANSITION, google/sanitizers#328 - clang-cl does not currently support targeting /MDd or /MTd. RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/Zi /wd4611 /w14640 /Zc:threadSafeInit-" PM_LINK="/debug" +PM_CL="/Zi /wd4611 /w14640 /Zc:threadSafeInit-" PM_LINK="/debug" RUNALL_CROSSLIST -* PM_CL="-fsanitize=address /BE /c /EHsc /MD /std:c++14" -* PM_CL="-fsanitize=address /BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="-fsanitize=address /BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="-fsanitize=address /BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++14" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++17" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++20" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++20 /permissive-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive-" -* PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive-" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /fp:strict" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MD /std:c++14" -* PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++14" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++14 /Zc:char8_t" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++17" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++17 /Zc:char8_t" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++20" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++20 /permissive-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MT /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive- /fp:strict" -* PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive-" +PM_CL="-fsanitize=address /BE /c /EHsc /MD /std:c++14" +PM_CL="-fsanitize=address /BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="-fsanitize=address /BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="-fsanitize=address /BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_CL="-fsanitize=address /EHsc /MD /std:c++14" +PM_CL="-fsanitize=address /EHsc /MD /std:c++17" +PM_CL="-fsanitize=address /EHsc /MD /std:c++20" +PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++17 /permissive-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++20 /permissive-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive-" +PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive-" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MD /std:c++14" +PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/D_ANNOTATE_STRING /BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++14" +PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++14 /Zc:char8_t" +PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++17" +PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++17 /Zc:char8_t" +PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++20" +PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/D_ANNOTATE_STRING /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" +PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++20 /permissive-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MDd /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MT /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive" +PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_CL="/D_ANNOTATE_STRING /EHsc /MTd /std:c++latest /permissive-" # 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" -* PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict" +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" +PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict" diff --git a/tests/std/tests/GH_002030_asan_annotate_vector/env.lst b/tests/std/tests/GH_002030_asan_annotate_vector/env.lst index 3af7152aca2..5e9703a1c29 100644 --- a/tests/std/tests/GH_002030_asan_annotate_vector/env.lst +++ b/tests/std/tests/GH_002030_asan_annotate_vector/env.lst @@ -6,50 +6,50 @@ # TRANSITION, google/sanitizers#328 - clang-cl does not currently support targeting /MDd or /MTd. RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/Zi /wd4611 /w14640 /Zc:threadSafeInit-" PM_LINK="/debug" +PM_CL="/Zi /wd4611 /w14640 /Zc:threadSafeInit-" PM_LINK="/debug" RUNALL_CROSSLIST -* PM_CL="-fsanitize=address /BE /c /EHsc /MD /std:c++14" -* PM_CL="-fsanitize=address /BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="-fsanitize=address /BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="-fsanitize=address /BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++14" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++17" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++20" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -* PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++20 /permissive-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" -* PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive-" -* PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive-" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /fp:strict" -* PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MD /std:c++14" -* PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++14" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++17" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++20" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++20 /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MT /std:c++latest /permissive-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive- /fp:strict" -* PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive-" +PM_CL="-fsanitize=address /BE /c /EHsc /MD /std:c++14" +PM_CL="-fsanitize=address /BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="-fsanitize=address /BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="-fsanitize=address /BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_CL="-fsanitize=address /EHsc /MD /std:c++14" +PM_CL="-fsanitize=address /EHsc /MD /std:c++17" +PM_CL="-fsanitize=address /EHsc /MD /std:c++20" +PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="-fsanitize=address /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++17 /permissive-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++20 /permissive-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="-fsanitize=address /EHsc /MDd /std:c++latest /permissive-" +PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="-fsanitize=address /EHsc /MT /std:c++latest /permissive-" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_CL="-fsanitize=address /EHsc /MTd /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MD /std:c++14" +PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++14" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++17" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++20" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++20 /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MDd /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MT /std:c++latest /permissive-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_CL="/D_ANNOTATE_VECTOR /EHsc /MTd /std:c++latest /permissive-" # TRANSITION, clang-cl does not support /alternatename so we cannot test /D_ANNOTATE_VECTOR 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" -* PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict" +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" +PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fsanitize=address -fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict" diff --git a/tests/std/tests/GH_002094_cpp_core_guidelines/env.lst b/tests/std/tests/GH_002094_cpp_core_guidelines/env.lst index 8eeee159a0d..56a4f87e0b0 100644 --- a/tests/std/tests/GH_002094_cpp_core_guidelines/env.lst +++ b/tests/std/tests/GH_002094_cpp_core_guidelines/env.lst @@ -3,14 +3,14 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MD /std:c++14" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MDd /std:c++17" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MTd /std:c++latest /permissive-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /analyze:plugin EspXEngine.dll /analyze:ruleset stl.ruleset" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MD /std:c++14" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MDd /std:c++17" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MTd /std:c++latest /permissive-" diff --git a/tests/std/tests/GH_002558_format_presetPadding/env.lst b/tests/std/tests/GH_002558_format_presetPadding/env.lst index 449518a8f4e..0e31b4c2875 100644 --- a/tests/std/tests/GH_002558_format_presetPadding/env.lst +++ b/tests/std/tests/GH_002558_format_presetPadding/env.lst @@ -4,37 +4,37 @@ # This is concepts_20_matrix.lst + /presetPadding with clang configs disabled (clang-cl doesn't support /presetPadding) RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /presetPadding" +* PM_CL="/w14640 /Zc:threadSafeInit- /presetPadding" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++20 /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -# * PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" -# * PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +# PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" +# PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" diff --git a/tests/std/tests/GH_002655_alternate_name_broke_linker/env.lst b/tests/std/tests/GH_002655_alternate_name_broke_linker/env.lst index 8c96a40cd21..01590223746 100644 --- a/tests/std/tests/GH_002655_alternate_name_broke_linker/env.lst +++ b/tests/std/tests/GH_002655_alternate_name_broke_linker/env.lst @@ -3,7 +3,7 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/MD" -* PM_CL="/MDd" -* PM_CL="/MT" -* PM_CL="/MTd" +PM_CL="/MD" +PM_CL="/MDd" +PM_CL="/MT" +PM_CL="/MTd" diff --git a/tests/std/tests/GH_003867_output_nan/test.cpp b/tests/std/tests/GH_003867_output_nan/test.cpp index e36c6779fc8..059ed13cca5 100644 --- a/tests/std/tests/GH_003867_output_nan/test.cpp +++ b/tests/std/tests/GH_003867_output_nan/test.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include +#include #include #include #include @@ -54,8 +55,56 @@ void test_gh_3867() { #endif // TEST_CUSTOM_FACET } +// Also test GH-4210: With setprecision(0) showpoint fixed, a bogus '.' is emitted for infinity and NaN + +template +void test_output_nonfinite_value(const FloatingPoint x) { + const auto s1 = [x] { + ostringstream os; + os << setprecision(0) << showpoint << fixed; + os << x; + return os.str(); + }(); + const auto s2 = [x] { + ostringstream os; + os << setprecision(0) << noshowpoint << fixed; + os << x; + return os.str(); + }(); + assert(s1 == s2); + + const auto s3 = [x] { + ostringstream os; + os << setprecision(0) << showpoint << fixed << showpos; + os << x; + return os.str(); + }(); + const auto s4 = [x] { + ostringstream os; + os << setprecision(0) << noshowpoint << fixed << showpos; + os << x; + return os.str(); + }(); + assert(s3 == s4); +} + +template +void test_gh_4210() { + constexpr auto inf_val = numeric_limits::infinity(); + constexpr auto nan_val = numeric_limits::quiet_NaN(); + + test_output_nonfinite_value(inf_val); + test_output_nonfinite_value(-inf_val); + test_output_nonfinite_value(nan_val); + test_output_nonfinite_value(-nan_val); +} + int main() { test_gh_3867(); test_gh_3867(); test_gh_3867(); + + test_gh_4210(); + test_gh_4210(); + test_gh_4210(); } diff --git a/tests/std/tests/P0009R18_mdspan_mdspan_death/test.cpp b/tests/std/tests/P0009R18_mdspan_mdspan_death/test.cpp index f4c072422c4..e1c3bba1a91 100644 --- a/tests/std/tests/P0009R18_mdspan_mdspan_death/test.cpp +++ b/tests/std/tests/P0009R18_mdspan_mdspan_death/test.cpp @@ -25,6 +25,11 @@ void test_access_with_invalid_multidimensional_index_1() { // I must be a multidimensional index in extents() (void) mds[3, 4]; } + +void test_access_with_nonrepresentable_index_1() { + mdspan mds{some_ints.data(), dextents{2, 3}}; + (void) mds[256u, -255]; +} #endif // __cpp_multidimensional_subscript void test_access_with_invalid_multidimensional_index_2() { @@ -33,6 +38,11 @@ void test_access_with_invalid_multidimensional_index_2() { (void) mds[array{4, 5}]; } +void test_access_with_nonrepresentable_index_2() { + mdspan mds{some_ints.data(), dextents{2, 3}}; + (void) mds[array{256, -255}]; +} + void test_size_when_index_type_is_signed() { mdspan mds{some_ints.data(), dextents{8, 8, 4}}; // The size of the multidimensional index space extents() must be representable as a value of type size_type @@ -51,8 +61,10 @@ int main(int argc, char* argv[]) { test_construction_from_other_mdspan, #ifdef __cpp_multidimensional_subscript // TRANSITION, P2128R6 test_access_with_invalid_multidimensional_index_1, + test_access_with_nonrepresentable_index_1, #endif // __cpp_multidimensional_subscript test_access_with_invalid_multidimensional_index_2, + test_access_with_nonrepresentable_index_2, test_size_when_index_type_is_signed, test_size_when_index_type_is_unsigned, }); diff --git a/tests/std/tests/P0088R3_variant/env.lst b/tests/std/tests/P0088R3_variant/env.lst index 7b996d4035d..4c863cb6339 100644 --- a/tests/std/tests/P0088R3_variant/env.lst +++ b/tests/std/tests/P0088R3_variant/env.lst @@ -7,50 +7,50 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +* PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" ASAN PM_CL="/EHsc /MD /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" ASAN PM_CL="/EHsc /MD /std:c++20 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" # With /clr /std:c++20, extreme compiler memory consumption causes test timeouts. -* PM_CL="/clr /MD /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" -* PM_CL="/clr /MDd /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" -* PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17 /DTEST_PERMISSIVE" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_CL="/clr /MD /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" +PM_CL="/clr /MDd /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" +PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17 /DTEST_PERMISSIVE" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" diff --git a/tests/std/tests/P0355R7_calendars_and_time_zones_formatting/test.cpp b/tests/std/tests/P0355R7_calendars_and_time_zones_formatting/test.cpp index bf0baaa112b..2901002420e 100644 --- a/tests/std/tests/P0355R7_calendars_and_time_zones_formatting/test.cpp +++ b/tests/std/tests/P0355R7_calendars_and_time_zones_formatting/test.cpp @@ -282,6 +282,10 @@ void test_duration_formatter() { assert(format(STR("{:%T %j}"), -days{4} - 23h - 30min) == STR("-119:30:00 4")); assert(format(STR("{:%T %j}"), duration{1.55f}) == STR("37:11:59 1")); assert(format(STR("{:%T %j}"), duration{-1.55f}) == STR("-37:11:59 1")); + + // GH-4247: : format() should accept %X and %EX for duration and hh_mm_ss + assert(format(STR("{:%X}"), 9h + 7min + 5s) == STR("09:07:05")); + assert(format(STR("{:%EX}"), 9h + 7min + 5s) == STR("09:07:05")); } template @@ -765,6 +769,10 @@ void test_hh_mm_ss_formatter() { assert(format(STR("{:%H}"), hh_mm_ss{24h}) == STR("24")); assert(format(STR("{:%H}"), hh_mm_ss{-24h}) == STR("-24")); assert(format(STR("{:%M %S}"), hh_mm_ss{27h + 12min + 30s}) == STR("12 30")); + + // GH-4247: : format() should accept %X and %EX for duration and hh_mm_ss + assert(format(STR("{:%X}"), hh_mm_ss{9h + 7min + 5s}) == STR("09:07:05")); + assert(format(STR("{:%EX}"), hh_mm_ss{9h + 7min + 5s}) == STR("09:07:05")); } void test_exception_classes() { diff --git a/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst b/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst index 54a8abf4e09..cd6097cbb95 100644 --- a/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst +++ b/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst @@ -6,38 +6,38 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /execution-charset:.932" +* PM_CL="/w14640 /Zc:threadSafeInit- /execution-charset:.932" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++20 /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -# * PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" -# * PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +# PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" +# PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/P0896R4_ranges_alg_find_first_of/test.cpp b/tests/std/tests/P0896R4_ranges_alg_find_first_of/test.cpp index 4ec715cfa4c..508b1260f62 100644 --- a/tests/std/tests/P0896R4_ranges_alg_find_first_of/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_find_first_of/test.cpp @@ -73,7 +73,7 @@ int main() { #else // ^^^ test all range combinations / test only interesting range combos vvv constexpr bool run_tests() { // The algorithm is oblivious to anything except maybe proxies so take the bare minimum input/forward range - using in_test_range = test::range; using fwd_test_range = test::range; diff --git a/tests/std/tests/P0896R4_ranges_alg_search/test.cpp b/tests/std/tests/P0896R4_ranges_alg_search/test.cpp index 1ae2959ff3d..8e753069c17 100644 --- a/tests/std/tests/P0896R4_ranges_alg_search/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_search/test.cpp @@ -159,8 +159,8 @@ constexpr bool run_tests() { { // Validate the memcmp optimization const int haystack[] = {1, 2, 3, 1, 2, 3, 1, 2, 3}; - const int needle[] = {1, 2, 3}; - const auto result = ranges::search(span{haystack}, needle); + const int needle[] = {1, 2, 3}; + const auto result = ranges::search(span{haystack}, needle); STATIC_ASSERT(same_as::iterator>>); assert(to_address(result.begin()) == haystack + 0); assert(to_address(result.end()) == haystack + 3); diff --git a/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp b/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp index 176e93fae42..86b2371cec1 100644 --- a/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp +++ b/tests/std/tests/P0896R4_ranges_range_machinery/test.cpp @@ -1529,6 +1529,7 @@ namespace nothrow_testing { STATIC_ASSERT(noexcept(ranges::crend(t)) == Nothrow); STATIC_ASSERT(noexcept(ranges::empty(t)) == Nothrow); STATIC_ASSERT(noexcept(ranges::size(t)) == Nothrow); + STATIC_ASSERT(noexcept(ranges::ssize(t)) == Nothrow); STATIC_ASSERT(noexcept(ranges::data(t)) == Nothrow); STATIC_ASSERT(noexcept(ranges::cdata(t)) == Nothrow); diff --git a/tests/std/tests/P0898R3_concepts/invocable_cc.hpp b/tests/std/tests/P0898R3_concepts/invocable_cc.hpp index 87aa55b48f3..6dd914f2796 100644 --- a/tests/std/tests/P0898R3_concepts/invocable_cc.hpp +++ b/tests/std/tests/P0898R3_concepts/invocable_cc.hpp @@ -57,7 +57,6 @@ void NAME() { } } - // clang-format off { // N4849 [func.require]/1.7: "f(t_1, t_2, ..., t_N) in all other cases" { @@ -818,7 +817,6 @@ void NAME() { STATIC_ASSERT(!test()); STATIC_ASSERT(!test()); } -// clang-format on } #undef CALLCONV diff --git a/tests/std/tests/P0898R3_concepts/test.cpp b/tests/std/tests/P0898R3_concepts/test.cpp index 308ab17024c..88dbfa27fbe 100644 --- a/tests/std/tests/P0898R3_concepts/test.cpp +++ b/tests/std/tests/P0898R3_concepts/test.cpp @@ -3335,7 +3335,7 @@ namespace test_relation { struct Equivalent { template - constexpr decltype(auto) operator()(T&& t, U&& u) const + constexpr decltype(auto) operator()(T && t, U && u) const requires requires { static_cast(t) == static_cast(u); } { return static_cast(t) == static_cast(u); diff --git a/tests/std/tests/P0912R5_coroutine/env.lst b/tests/std/tests/P0912R5_coroutine/env.lst index c1ae7ea8ca2..1e214583dd8 100644 --- a/tests/std/tests/P0912R5_coroutine/env.lst +++ b/tests/std/tests/P0912R5_coroutine/env.lst @@ -3,41 +3,41 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /await:strict /std:c++14" +PM_CL="/EHsc /MD /await:strict /std:c++14" ASAN PM_CL="/EHsc /MD /await:strict /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /await:strict /std:c++14 /permissive-" +PM_CL="/EHsc /MD /await:strict /std:c++14 /permissive-" ASAN PM_CL="/EHsc /MD /await:strict /std:c++14 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /await:strict /std:c++14 /permissive- /Zc:preprocessor" +PM_CL="/EHsc /MTd /await:strict /std:c++14 /permissive- /Zc:preprocessor" ASAN PM_CL="/EHsc /MTd /await:strict /std:c++14 /permissive- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /await:strict /std:c++14 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MD /await:strict /std:c++14 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MD /await:strict /std:c++14 /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /await:strict /std:c++17" +PM_CL="/EHsc /MD /await:strict /std:c++17" ASAN PM_CL="/EHsc /MD /await:strict /std:c++17 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /await:strict /std:c++17 /permissive-" +PM_CL="/EHsc /MD /await:strict /std:c++17 /permissive-" ASAN PM_CL="/EHsc /MD /await:strict /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /await:strict /std:c++17 /permissive- /Zc:preprocessor" +PM_CL="/EHsc /MTd /await:strict /std:c++17 /permissive- /Zc:preprocessor" ASAN PM_CL="/EHsc /MTd /await:strict /std:c++17 /permissive- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /await:strict /std:c++17 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MD /await:strict /std:c++17 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MD /await:strict /std:c++17 /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /std:c++20 /permissive" +PM_CL="/EHsc /MD /std:c++20 /permissive" ASAN PM_CL="/EHsc /MD /std:c++20 /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /std:c++20 /permissive-" +PM_CL="/EHsc /MD /std:c++20 /permissive-" ASAN PM_CL="/EHsc /MD /std:c++20 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /std:c++20 /permissive- /Zc:preprocessor" +PM_CL="/EHsc /MTd /std:c++20 /permissive- /Zc:preprocessor" ASAN PM_CL="/EHsc /MTd /std:c++20 /permissive- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /std:c++20 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MD /std:c++20 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MD /std:c++20 /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /std:c++latest /permissive" +PM_CL="/EHsc /MD /std:c++latest /permissive" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /std:c++latest /permissive-" +PM_CL="/EHsc /MD /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /std:c++latest /permissive- /Zc:preprocessor" +PM_CL="/EHsc /MTd /std:c++latest /permissive- /Zc:preprocessor" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MD /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/BE /c /EHsc /MD /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive-" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/BE /c /EHsc /MD /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive-" diff --git a/tests/std/tests/P1206R7_ranges_to_misc/test.cpp b/tests/std/tests/P1206R7_ranges_to_misc/test.cpp index 354e365f52a..9ddf8f153aa 100644 --- a/tests/std/tests/P1206R7_ranges_to_misc/test.cpp +++ b/tests/std/tests/P1206R7_ranges_to_misc/test.cpp @@ -67,13 +67,17 @@ constexpr bool test_common_constructible() { using value_type = int; constexpr common_constructible(const int* const first, const int* const last, secret_key_t) - : first_{first}, last_{last} {} + : first_{first}, last_{last}, args_{3} {} + + constexpr common_constructible(const int* const first, const int* const last, secret_key_t, double) + : first_{first}, last_{last}, args_{4} {} const int* begin() const; // not defined const int* end() const; // not defined const int* first_; const int* last_; + int args_; }; int some_ints[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; @@ -82,11 +86,27 @@ constexpr bool test_common_constructible() { std::same_as auto c0 = ranges::to(some_ints, secret_key); assert(c0.first_ == ranges::begin(some_ints)); assert(c0.last_ == ranges::end(some_ints)); + assert(c0.args_ == 3); } { 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); + } + + // Verify that more than one argument can be passed after the range: + { + std::same_as auto c2 = ranges::to(some_ints, secret_key, 3.14); + assert(c2.first_ == ranges::begin(some_ints)); + assert(c2.last_ == ranges::end(some_ints)); + assert(c2.args_ == 4); + } + { + 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); } return true; diff --git a/tests/std/tests/P1208R6_source_location/test.cpp b/tests/std/tests/P1208R6_source_location/test.cpp index 18b8f26f57d..50f4c695ad5 100644 --- a/tests/std/tests/P1208R6_source_location/test.cpp +++ b/tests/std/tests/P1208R6_source_location/test.cpp @@ -181,7 +181,11 @@ constexpr void lambda_test() { assert(x1.column() == 53); assert(x2.column() == 58); #else // ^^^ EDG / C1XX vvv +#ifdef _MSVC_INTERNAL_TESTING // TRANSITION, VS 2022 17.10 Preview 1 + assert(x1.column() == 45); +#else // ^^^ no workaround / workaround vvv assert(x1.column() == 52); +#endif // ^^^ workaround ^^^ assert(x2.column() == 50); #endif // ^^^ C1XX ^^^ #if _USE_DETAILED_FUNCTION_NAME_IN_SOURCE_LOCATION @@ -266,13 +270,11 @@ constexpr bool test() { return true; } -#ifndef __EDG__ // TRANSITION, VSO-1849463 // Also test GH-2822 Failed to specialize std::invoke on operator() with default argument // std::source_location::current() void test_gh_2822() { // COMPILE-ONLY invoke([](source_location = source_location::current()) {}); } -#endif // ^^^ no workaround ^^^ int main() { test(); diff --git a/tests/std/tests/P1502R1_standard_library_header_units/env.lst b/tests/std/tests/P1502R1_standard_library_header_units/env.lst index 7021e207efc..c2a7a19114b 100644 --- a/tests/std/tests/P1502R1_standard_library_header_units/env.lst +++ b/tests/std/tests/P1502R1_standard_library_header_units/env.lst @@ -3,20 +3,20 @@ RUNALL_INCLUDE ..\..\..\universal_prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14365 /D_ENFORCE_FACET_SPECIALIZATIONS=1 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER /Zc:preprocessor" +* PM_CL="/w14365 /D_ENFORCE_FACET_SPECIALIZATIONS=1 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER /Zc:preprocessor" RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=20 /std:c++20" -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=23 /std:c++latest" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=20 /std:c++20" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=23 /std:c++latest" RUNALL_CROSSLIST -* PM_CL="/MD" -* PM_CL="/MDd" -* PM_CL="/MT" -* PM_CL="/MTd" +* PM_CL="/MD" +* PM_CL="/MDd" +* PM_CL="/MT" +* PM_CL="/MTd" RUNALL_CROSSLIST -* PM_CL="/DTEST_HEADER_UNITS /DTEST_TOPO_SORT" -* PM_CL="/DTEST_HEADER_UNITS" +* PM_CL="/DTEST_HEADER_UNITS /DTEST_TOPO_SORT" +* PM_CL="/DTEST_HEADER_UNITS" RUNALL_CROSSLIST -* PM_CL="" -# ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug" # TRANSITION, DevCom-10439535 -# * PM_CL="/analyze:only /analyze:autolog-" # TRANSITION, works correctly but slowly -# * PM_CL="/BE" # TRANSITION, VSO-1232145 "EDG ICEs when consuming Standard Library Header Units" +PM_CL="" +ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug" +# PM_CL="/analyze:only /analyze:autolog-" # TRANSITION, works correctly but slowly +# PM_CL="/BE" # TRANSITION, VSO-1232145 "EDG ICEs when consuming Standard Library Header Units" diff --git a/tests/std/tests/P1645R1_constexpr_numeric/test.cpp b/tests/std/tests/P1645R1_constexpr_numeric/test.cpp index 8a5842a193e..e557580f550 100644 --- a/tests/std/tests/P1645R1_constexpr_numeric/test.cpp +++ b/tests/std/tests/P1645R1_constexpr_numeric/test.cpp @@ -11,21 +11,21 @@ using namespace std; struct not_std_plus { template - constexpr decltype(auto) operator()(T&& t, U&& u) const { + constexpr decltype(auto) operator()(T && t, U && u) const { return forward(t) + forward(u); } }; struct not_std_minus { template - constexpr decltype(auto) operator()(T&& t, U&& u) const { + constexpr decltype(auto) operator()(T && t, U && u) const { return forward(t) - forward(u); } }; struct not_std_multiplies { template - constexpr decltype(auto) operator()(T&& t, U&& u) const { + constexpr decltype(auto) operator()(T && t, U && u) const { return forward(t) * forward(u); } }; diff --git a/tests/std/tests/P2286R8_text_formatting_escaping_legacy_text_encoding/env.lst b/tests/std/tests/P2286R8_text_formatting_escaping_legacy_text_encoding/env.lst index 4e567316db7..bb35a7194ff 100644 --- a/tests/std/tests/P2286R8_text_formatting_escaping_legacy_text_encoding/env.lst +++ b/tests/std/tests/P2286R8_text_formatting_escaping_legacy_text_encoding/env.lst @@ -6,36 +6,36 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /execution-charset:.932" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /execution-charset:.932" RUNALL_CROSSLIST -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:noexceptTypes-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/MD /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MD /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/MD /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:wchar_t-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:wchar_t-" ASAN PM_CL="/MDd /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MDd /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/MDd /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive-" ASAN PM_CL="/MT /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/MT /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /fp:strict" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /fp:strict" ASAN PM_CL="/MTd /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MTd /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive" ASAN PM_CL="/MTd /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/MTd /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -# * PM_CL="/permissive- /BE /c /MD" -# * PM_CL="/permissive- /BE /c /MTd" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MD" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MTd /fp:strict" -# * PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +# PM_CL="/permissive- /BE /c /MD" +# PM_CL="/permissive- /BE /c /MTd" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MD" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MTd /fp:strict" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/P2286R8_text_formatting_formattable/test.compile.pass.cpp b/tests/std/tests/P2286R8_text_formatting_formattable/test.compile.pass.cpp index 19123527fd4..85b154c52cf 100644 --- a/tests/std/tests/P2286R8_text_formatting_formattable/test.compile.pass.cpp +++ b/tests/std/tests/P2286R8_text_formatting_formattable/test.compile.pass.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -52,6 +53,28 @@ concept encoded_character_type = same_as #endif // defined(__cpp_char8_t) || same_as || same_as || same_as; +template +struct alternative_allocator { + using value_type = T; + + alternative_allocator() = default; + template + constexpr alternative_allocator(const alternative_allocator&) noexcept {} + + T* allocate(size_t n) { + return allocator{}.allocate(n); + } + + void deallocate(T* p, size_t n) { + allocator{}.deallocate(p, n); + } + + template + bool operator==(const alternative_allocator&) const noexcept { + return true; + } +}; + template void assert_is_not_formattable() { static_assert(!formattable); @@ -179,6 +202,22 @@ void test_P2693() { } } +template +void test_P2286_vector_bool() { + assert_is_formattable(); + + // The const_reference shall be bool. + assert_is_formattable(); +} + +// Tests for P2286 Formatting ranges +template +void test_P2286() { + test_P2286_vector_bool>(); + test_P2286_vector_bool>(); + test_P2286_vector_bool>>(); +} + // Tests volatile qualified objects are no longer formattable. template void test_LWG3631() { @@ -313,6 +352,7 @@ void test() { test_P0645(); test_P1361(); test_P2693(); + test_P2286(); test_LWG3631(); test_abstract_class(); test_disabled(); diff --git a/tests/std/tests/P2286R8_text_formatting_vector_bool_reference/env.lst b/tests/std/tests/P2286R8_text_formatting_vector_bool_reference/env.lst new file mode 100644 index 00000000000..18e2d7c71ec --- /dev/null +++ b/tests/std/tests/P2286R8_text_formatting_vector_bool_reference/env.lst @@ -0,0 +1,4 @@ +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +RUNALL_INCLUDE ..\concepts_latest_matrix.lst diff --git a/tests/std/tests/P2286R8_text_formatting_vector_bool_reference/test.cpp b/tests/std/tests/P2286R8_text_formatting_vector_bool_reference/test.cpp new file mode 100644 index 00000000000..71872fc94c5 --- /dev/null +++ b/tests/std/tests/P2286R8_text_formatting_vector_bool_reference/test.cpp @@ -0,0 +1,85 @@ +// Copyright (c) Microsoft Corporation. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +using namespace std; + +#define STR(Str) TYPED_LITERAL(CharT, Str) + +template +struct alternative_allocator { + using value_type = T; + + alternative_allocator() = default; + template + constexpr alternative_allocator(const alternative_allocator&) noexcept {} + + T* allocate(size_t n) { + return allocator{}.allocate(n); + } + + void deallocate(T* p, size_t n) { + allocator{}.deallocate(p, n); + } + + template + bool operator==(const alternative_allocator&) const noexcept { + return true; + } +}; + +#ifdef _DEBUG +#define DEFAULT_IDL_SETTING 2 +#else +#define DEFAULT_IDL_SETTING 0 +#endif + +#if !defined(_DLL) || _ITERATOR_DEBUG_LEVEL == DEFAULT_IDL_SETTING +template +struct yes_no_punct : numpunct { + basic_string do_truename() const override { + return STR("yes"); + } + + basic_string do_falsename() const override { + return STR("no"); + } +}; +#endif // !defined(_DLL) || _ITERATOR_DEBUG_LEVEL == DEFAULT_IDL_SETTING + +template +void test_formatting_vector_bool_reference() { + vector vb{false, true}; + + assert(format(STR("{}, {}"), vb[0], vb[1]) == format(STR("{}, {}"), false, true)); + assert(format(STR("{:}, {:}"), vb[0], vb[1]) == format(STR("{:}, {:}"), false, true)); + assert(format(STR("{:d}, {:x}"), vb[0], vb[1]) == format(STR("{:d}, {:x}"), false, true)); + +#if !defined(_DLL) || _ITERATOR_DEBUG_LEVEL == DEFAULT_IDL_SETTING + locale loc{locale::classic(), new yes_no_punct}; + + assert(format(loc, STR("{:L}"), vb[1]) == STR("yes")); + assert(format(loc, STR("{:L}"), vb[0]) == STR("no")); +#endif // !defined(_DLL) || _ITERATOR_DEBUG_LEVEL == DEFAULT_IDL_SETTING +} + +int main() { + test_formatting_vector_bool_reference>(); + test_formatting_vector_bool_reference>(); + test_formatting_vector_bool_reference>(); + + test_formatting_vector_bool_reference>(); + test_formatting_vector_bool_reference>(); + test_formatting_vector_bool_reference>(); +} diff --git a/tests/std/tests/P2387R3_pipe_support_for_user_defined_range_adaptors/test.cpp b/tests/std/tests/P2387R3_pipe_support_for_user_defined_range_adaptors/test.cpp index 00926c5635c..0d57f554151 100644 --- a/tests/std/tests/P2387R3_pipe_support_for_user_defined_range_adaptors/test.cpp +++ b/tests/std/tests/P2387R3_pipe_support_for_user_defined_range_adaptors/test.cpp @@ -40,7 +40,7 @@ constexpr bool is_range_adaptor_closure() { struct IdentityRangeAdaptorClosure : ranges::range_adaptor_closure { template - constexpr decltype(auto) operator()(T&& range) const { + constexpr decltype(auto) operator()(T && range) const { return forward(range); } }; @@ -223,6 +223,80 @@ constexpr bool test_mixing_of_range_adaptors() { return true; } +struct Pinned { + Pinned() = default; + Pinned(const Pinned&) = delete; + Pinned& operator=(const Pinned&) = delete; +}; + +constexpr Pinned pinned_object{}; + +struct PinnedReturningRaco : ranges::range_adaptor_closure { + constexpr const Pinned& operator()(ranges::range auto&&) const noexcept { + return pinned_object; + } +}; + +struct RangeIdentity : ranges::range_adaptor_closure { + constexpr auto&& operator()(ranges::range auto&& t) const noexcept { + return forward(t); + } +}; + +struct ConstOnlyRangeIdentity : ranges::range_adaptor_closure { + constexpr auto&& operator()(ranges::range auto&& t) const noexcept { + return forward(t); + } + void operator()(ranges::range auto&&) = delete; +}; + +void test_perfect_forwarding_properties() { // COMPILE-ONLY + // GH-4153: : operator|(_Left&& __l, _Right&& __r) should return decltype(auto) + // Intentionally avoid using some traits/concepts to test correctness in non-immediate contexts. + { + PinnedReturningRaco raco{}; + + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + } + { + auto combined_pipeline = RangeIdentity{} | PinnedReturningRaco{}; + + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + static_assert(same_as); + } + { + auto weird_pipeline = ConstOnlyRangeIdentity{} | PinnedReturningRaco{}; + using WeirdPipelineType = decltype(weird_pipeline); + + static_assert(same_as); + static_assert(same_as); + + static_assert(!CanPipe); + static_assert(!CanPipe); + + static_assert(same_as); + static_assert(same_as); + + static_assert(!invocable); + static_assert(!invocable); + } +} + int main() { assert(test_user_defined_adaptors()); static_assert(test_user_defined_adaptors()); diff --git a/tests/std/tests/P2465R3_standard_library_modules/env.lst b/tests/std/tests/P2465R3_standard_library_modules/env.lst index 8447215d645..e4566f5a9b4 100644 --- a/tests/std/tests/P2465R3_standard_library_modules/env.lst +++ b/tests/std/tests/P2465R3_standard_library_modules/env.lst @@ -3,19 +3,18 @@ RUNALL_INCLUDE ..\..\..\universal_prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14365 /D_ENFORCE_FACET_SPECIALIZATIONS=1 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER /Zc:preprocessor" +* PM_CL="/w14365 /D_ENFORCE_FACET_SPECIALIZATIONS=1 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER /Zc:preprocessor" RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=20 /std:c++20" -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=23 /std:c++latest" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=20 /std:c++20" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /DTEST_STANDARD=23 /std:c++latest" RUNALL_CROSSLIST -* PM_CL="/MD" -* PM_CL="/MDd" -* PM_CL="/MT" -* PM_CL="/MTd" -* PM_CL="/MDd /analyze:only /analyze:autolog-" -* PM_CL="/MDd /GR- /D_HAS_STATIC_RTTI=0" -* PM_CL="/MDd /utf-8" -# TRANSITION, DevCom-10439535 -# RUNALL_CROSSLIST -# * PM_CL="" -# ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug" +* PM_CL="/MD" +* PM_CL="/MDd" +* PM_CL="/MT" +* PM_CL="/MTd" +* PM_CL="/MDd /analyze:only /analyze:autolog-" +* PM_CL="/MDd /GR- /D_HAS_STATIC_RTTI=0" +* PM_CL="/MDd /utf-8" +RUNALL_CROSSLIST +PM_CL="" +ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug" diff --git a/tests/std/tests/P2465R3_standard_library_modules/test3.cpp b/tests/std/tests/P2465R3_standard_library_modules/test3.cpp index f826fdc436c..5062432bc0d 100644 --- a/tests/std/tests/P2465R3_standard_library_modules/test3.cpp +++ b/tests/std/tests/P2465R3_standard_library_modules/test3.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -#ifdef _MSVC_INTERNAL_TESTING // TRANSITION, VS 2022 17.9 Preview 3 +#ifdef _MSVC_INTERNAL_TESTING // TRANSITION, VS 2022 17.10 Preview 1 #include <__msvc_all_public_headers.hpp> #else // ^^^ no workaround / workaround vvv #include // intentionally not diff --git a/tests/std/tests/P2465R3_standard_library_modules/test4.cpp b/tests/std/tests/P2465R3_standard_library_modules/test4.cpp index 953ff2a5a94..0fda3fa6468 100644 --- a/tests/std/tests/P2465R3_standard_library_modules/test4.cpp +++ b/tests/std/tests/P2465R3_standard_library_modules/test4.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -#ifdef _MSVC_INTERNAL_TESTING // TRANSITION, VS 2022 17.9 Preview 3 +#ifdef _MSVC_INTERNAL_TESTING // TRANSITION, VS 2022 17.10 Preview 1 #include <__msvc_all_public_headers.hpp> #else // ^^^ no workaround / workaround vvv #include // intentionally not diff --git a/tests/std/tests/P2538R1_adl_proof_std_projected/test.compile.pass.cpp b/tests/std/tests/P2538R1_adl_proof_std_projected/test.compile.pass.cpp index 258cb1376f0..b31678b4aba 100644 --- a/tests/std/tests/P2538R1_adl_proof_std_projected/test.compile.pass.cpp +++ b/tests/std/tests/P2538R1_adl_proof_std_projected/test.compile.pass.cpp @@ -25,6 +25,14 @@ struct tagged_equal { } }; +template +struct tagged_less { + template + constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) < std::forward(u)) { + return std::forward(t) < std::forward(u); + } +}; + template struct tagged_identity { template @@ -54,6 +62,7 @@ using simple_identity = tagged_identity; using validator = holder*; using validating_truth = tagged_truth>; using validating_equal = tagged_equal>; +using validating_less = tagged_less>; using validating_identity = tagged_identity>; void test_ranges_algorithms() { @@ -200,6 +209,50 @@ void test_ranges_algorithms() { (void) ends_with(iarr, iarr, iarr, iarr, validating_equal{}); (void) ends_with(iarr, iarr, validating_equal{}); #endif // _HAS_CXX23 + + (void) min(+varr, +varr); + (void) min({+varr, +varr}); + (void) min(varr); + (void) min(+iarr, +iarr, validating_less{}); + (void) min({+iarr, +iarr}, {}, validating_identity{}); + (void) min(iarr, validating_less{}); + + (void) max(+varr, +varr); + (void) max({+varr, +varr}); + (void) max(varr); + (void) max(+iarr, +iarr, validating_less{}); + (void) max({+iarr, +iarr}, {}, validating_identity{}); + (void) max(iarr, validating_less{}); + + (void) minmax(+varr, +varr); + (void) minmax({+varr, +varr}); + (void) minmax(varr); + (void) minmax(+iarr, +iarr, validating_less{}); + (void) minmax({+iarr, +iarr}, {}, validating_identity{}); + (void) minmax(iarr, validating_less{}); + + (void) min_element(varr, varr + 1); + (void) min_element(varr); + (void) min_element(iarr, iarr + 1, validating_less{}); + (void) min_element(iarr, {}, validating_identity{}); + + (void) max_element(varr, varr + 1); + (void) max_element(varr); + (void) max_element(iarr, iarr + 1, validating_less{}); + (void) max_element(iarr, {}, validating_identity{}); + + (void) minmax_element(varr, varr + 1); + (void) minmax_element(varr); + (void) minmax_element(iarr, iarr + 1, validating_less{}); + (void) minmax_element(iarr, {}, validating_identity{}); + + (void) clamp(+varr, +varr, +varr); + (void) clamp(+iarr, +iarr, +iarr, validating_less{}); + + (void) lexicographical_compare(varr, varr, varr, varr); + (void) lexicographical_compare(varr, varr); + (void) lexicographical_compare(iarr, iarr, iarr, iarr, validating_less{}); + (void) lexicographical_compare(iarr, iarr, validating_less{}); } // Separated test for ranges::count and equality diff --git a/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp b/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp index c07d9a65811..7622338207b 100644 --- a/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp +++ b/tests/std/tests/VSO_0000000_allocator_propagation/test.cpp @@ -464,12 +464,7 @@ _CONSTEXPR20 bool test_sequence() { test_sequence_copy_assign>(11, 22, 11); // POCCA, non-equal allocators test_sequence_copy_assign>(11, 22, 11); // POCCA, always-equal allocators -#if _HAS_CXX20 && !defined(__clang__) && !defined(__EDG__) // TRANSITION, VSO-1888462 - if (!is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - test_sequence_move_ctor(); - } + test_sequence_move_ctor(); test_sequence_move_alloc_ctor(11, 11); // equal allocators test_sequence_move_alloc_ctor(11, 22); // non-equal allocators diff --git a/tests/std/tests/VSO_0000000_instantiate_containers/test.compile.pass.cpp b/tests/std/tests/VSO_0000000_instantiate_containers/test.compile.pass.cpp index b079d227f9c..cde888b9623 100644 --- a/tests/std/tests/VSO_0000000_instantiate_containers/test.compile.pass.cpp +++ b/tests/std/tests/VSO_0000000_instantiate_containers/test.compile.pass.cpp @@ -68,6 +68,25 @@ struct convertible_type { T m_val; }; +#ifndef _M_CEE // TRANSITION, VSO-1659496 +template +struct tagged_falsity { + template + bool operator()(U&&) const { + return false; + } +}; + +template +struct holder { + T t; +}; + +struct incomplete; + +using validating_falsity = tagged_falsity>; +#endif // _M_CEE + template void math_operators_test(T lhs, U rhs) { USE_VALUE(lhs * rhs); @@ -219,8 +238,14 @@ template void erase_if_test(T value) { auto pr1 = [](auto) { return false; }; std::experimental::fundamentals_v2::erase_if(value, pr1); +#ifndef _M_CEE // TRANSITION, VSO-1659496 + std::experimental::fundamentals_v2::erase_if(value, validating_falsity{}); +#endif // _M_CEE #if _HAS_CXX20 std::erase_if(value, pr1); +#ifndef _M_CEE // TRANSITION, VSO-1659496 + std::erase_if(value, validating_falsity{}); +#endif // _M_CEE #endif // _HAS_CXX20 } diff --git a/tests/std/tests/VSO_0000000_type_traits/test.cpp b/tests/std/tests/VSO_0000000_type_traits/test.cpp index 2c272249256..8e086884729 100644 --- a/tests/std/tests/VSO_0000000_type_traits/test.cpp +++ b/tests/std/tests/VSO_0000000_type_traits/test.cpp @@ -1387,12 +1387,10 @@ STATIC_ASSERT(is_same_v, simple_base const&&>); STATIC_ASSERT(is_same_v, simple_base const&&>); -#if !(defined(__EDG__) && defined(_MSVC_INTERNAL_TESTING)) // TRANSITION, remove after EDG is updated internally STATIC_ASSERT(is_same_v, int (&)()>); STATIC_ASSERT(is_same_v, int (&)()>); STATIC_ASSERT(is_same_v, int (&)()>); STATIC_ASSERT(is_same_v, int (&&)()>); -#endif // ^^^ no workaround ^^^ STATIC_ASSERT(is_same_v, int const volatile&&>); STATIC_ASSERT(is_same_v, int const volatile&>); diff --git a/tests/std/tests/VSO_0105317_expression_sfinae/test.cpp b/tests/std/tests/VSO_0105317_expression_sfinae/test.cpp index f6c599d6e89..0a497e73d66 100644 --- a/tests/std/tests/VSO_0105317_expression_sfinae/test.cpp +++ b/tests/std/tests/VSO_0105317_expression_sfinae/test.cpp @@ -625,9 +625,7 @@ NonMovable getNonMovable() noexcept(Nothrow); STATIC_ASSERT(is_invocable_r_v)>); STATIC_ASSERT(is_invocable_r_v)>); STATIC_ASSERT(!is_nothrow_invocable_r_v)>); -#if defined(__clang__) || defined(__EDG__) // TRANSITION, VSO-1899423 -STATIC_ASSERT(is_nothrow_invocable_r_v)>); -#endif // ^^^ no workaround ^^^ +STATIC_ASSERT(is_nothrow_invocable_r_v)> == noexcept_in_the_type_system); template struct ConvertsToNonMovable { @@ -637,18 +635,15 @@ struct ConvertsToNonMovable { template ConvertsToNonMovable getConvertsToNonMovable() noexcept(Nothrow); -#if defined(__clang__) || defined(__EDG__) // TRANSITION, VSO-1899423 STATIC_ASSERT(is_invocable_r_v)>); STATIC_ASSERT(is_invocable_r_v)>); STATIC_ASSERT(is_invocable_r_v)>); STATIC_ASSERT(is_invocable_r_v)>); -#endif // ^^^ no workaround ^^^ STATIC_ASSERT(!is_nothrow_invocable_r_v)>); STATIC_ASSERT(!is_nothrow_invocable_r_v)>); STATIC_ASSERT(!is_nothrow_invocable_r_v)>); -#if defined(__clang__) || defined(__EDG__) // TRANSITION, VSO-1899423 -STATIC_ASSERT(is_nothrow_invocable_r_v)>); -#endif // ^^^ no workaround ^^^ +STATIC_ASSERT(is_nothrow_invocable_r_v)> + == noexcept_in_the_type_system); #endif // _HAS_CXX17 diff --git a/tests/std/tests/VSO_0157762_feature_test_macros/env.lst b/tests/std/tests/VSO_0157762_feature_test_macros/env.lst index caf3d3e0eb1..f498ae71be5 100644 --- a/tests/std/tests/VSO_0157762_feature_test_macros/env.lst +++ b/tests/std/tests/VSO_0157762_feature_test_macros/env.lst @@ -6,40 +6,40 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /Zc:preprocessor" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/clr:pure /MD /std:c++14" -* PM_CL="/clr:pure /MDd /std:c++14" -* PM_CL="/BE /c /EHsc /MD /std:c++14" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/clr:pure /MD /std:c++14" +PM_CL="/clr:pure /MDd /std:c++14" +PM_CL="/BE /c /EHsc /MD /std:c++14" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" # The following lines are extras not present in usual_matrix.lst -* PM_CL="/MT /std:c++latest /permissive- /EHsc /D_HAS_STD_BYTE=0" -* PM_CL="/MT /std:c++latest /permissive- /EHsc /GR- /D_HAS_STATIC_RTTI=0" -* PM_CL="/MT /std:c++14 /permissive- /EHsc /await:strict" -* PM_CL="/MT /std:c++14 /permissive- /EHsc /Zc:char8_t" -* PM_CL="/MT /std:c++17 /permissive- /EHsc /Zc:char8_t" -* PM_CL="/MT /std:c++latest /permissive- /EHsc" +PM_CL="/MT /std:c++latest /permissive- /EHsc /D_HAS_STD_BYTE=0" +PM_CL="/MT /std:c++latest /permissive- /EHsc /GR- /D_HAS_STATIC_RTTI=0" +PM_CL="/MT /std:c++14 /permissive- /EHsc /await:strict" +PM_CL="/MT /std:c++14 /permissive- /EHsc /Zc:char8_t" +PM_CL="/MT /std:c++17 /permissive- /EHsc /Zc:char8_t" +PM_CL="/MT /std:c++latest /permissive- /EHsc" diff --git a/tests/std/tests/VSO_0938757_attribute_order/env.lst b/tests/std/tests/VSO_0938757_attribute_order/env.lst index 832f6dd1377..e11f90f1dfb 100644 --- a/tests/std/tests/VSO_0938757_attribute_order/env.lst +++ b/tests/std/tests/VSO_0938757_attribute_order/env.lst @@ -3,4 +3,4 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /D_PREFAST_ -Wno-ignored-attributes" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /D_PREFAST_ -Wno-ignored-attributes" diff --git a/tests/std/tests/VSO_0971246_legacy_await_headers/env.lst b/tests/std/tests/VSO_0971246_legacy_await_headers/env.lst index f572072d8d2..42cd9bd32fc 100644 --- a/tests/std/tests/VSO_0971246_legacy_await_headers/env.lst +++ b/tests/std/tests/VSO_0971246_legacy_await_headers/env.lst @@ -3,11 +3,11 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MT /std:c++latest /permissive-" -* PM_CL="/EHsc /MT /std:c++latest /permissive" -* PM_CL="/EHsc /MT /std:c++latest /permissive- /await" -* PM_CL="/EHsc /MT /std:c++latest /permissive /await" -* PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" +* PM_CL="/EHsc /MT /std:c++latest /permissive-" +* PM_CL="/EHsc /MT /std:c++latest /permissive" +* PM_CL="/EHsc /MT /std:c++latest /permissive- /await" +* PM_CL="/EHsc /MT /std:c++latest /permissive /await" +* PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" RUNALL_CROSSLIST -* PM_CL="" +PM_CL="" ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug" diff --git a/tests/std/tests/VSO_1925201_iter_traits/env.lst b/tests/std/tests/VSO_1925201_iter_traits/env.lst new file mode 100644 index 00000000000..d6d824b5879 --- /dev/null +++ b/tests/std/tests/VSO_1925201_iter_traits/env.lst @@ -0,0 +1,4 @@ +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +RUNALL_INCLUDE ..\concepts_20_matrix.lst diff --git a/tests/std/tests/VSO_1925201_iter_traits/test.compile.pass.cpp b/tests/std/tests/VSO_1925201_iter_traits/test.compile.pass.cpp new file mode 100644 index 00000000000..35d0eeff053 --- /dev/null +++ b/tests/std/tests/VSO_1925201_iter_traits/test.compile.pass.cpp @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include +#include +#include + +// Defend against regression of DevCom-10532126, in which several function templates used +// `_Iter_diff_t` as a parameter type instead of the specified +// `typename iterator_traits::difference_type`. The two are equivalent in C++17, but in C++20 +// _Iter_diff_t becomes iter_difference_t. We thought the difference was not observable, +// but it interferes with concept overloading. + +using std::iter_value_t, std::iterator_traits, std::same_as; +using std::next, std::prev, std::shift_left, std::shift_right; + +struct meow {}; + +constexpr meow* nil = nullptr; + +template +concept Meowerator = same_as, meow>; + +template +void next(I, typename iterator_traits::difference_type = 1) {} + +template +void prev(I, typename iterator_traits::difference_type = 1) {} + +template +void shift_left(I, I, typename iterator_traits::difference_type) {} +template +void shift_right(I, I, typename iterator_traits::difference_type) {} +// Note that we intentionally do not test the ExecutionPolicy overloads of shift_meow. They are +// constrained via an unspecified mechanism to "not participate in overload resolution unless +// is_execution_policy_v is true", effectively making concept overloading +// impossible (or at least non-portable). + +static_assert(same_as); +static_assert(same_as); + +static_assert(same_as); +static_assert(same_as); + +#ifndef __clang__ // TRANSITION, LLVM-75404 +static_assert(same_as); +static_assert(same_as); +#endif // TRANSITION, LLVM-75404 diff --git a/tests/std/tests/callconv_matrix.lst b/tests/std/tests/callconv_matrix.lst index 9bb76e410ad..27ea8792d5b 100644 --- a/tests/std/tests/callconv_matrix.lst +++ b/tests/std/tests/callconv_matrix.lst @@ -2,9 +2,9 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception RUNALL_INCLUDE .\usual_matrix.lst -* PM_CL="/Gr /EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/Gr /EHsc /MTd /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" -* PM_CL="/Gv /EHsc /MT /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" -* PM_CL="/Gv /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/Gz /EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/Gz /EHsc /MTd /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" +PM_CL="/Gr /EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/Gr /EHsc /MTd /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" +PM_CL="/Gv /EHsc /MT /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" +PM_CL="/Gv /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/Gz /EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/Gz /EHsc /MTd /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" diff --git a/tests/std/tests/char8_t_17_matrix.lst b/tests/std/tests/char8_t_17_matrix.lst index bec274cd241..61262e29264 100644 --- a/tests/std/tests/char8_t_17_matrix.lst +++ b/tests/std/tests/char8_t_17_matrix.lst @@ -2,5 +2,5 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception RUNALL_INCLUDE .\usual_17_matrix.lst -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /Zc:char8_t" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /Zc:char8_t" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- /Zc:char8_t -fsanitize=address /Zi" PM_LINK="/debug" diff --git a/tests/std/tests/char8_t_impure_matrix.lst b/tests/std/tests/char8_t_impure_matrix.lst index e0057058972..8e2775df30d 100644 --- a/tests/std/tests/char8_t_impure_matrix.lst +++ b/tests/std/tests/char8_t_impure_matrix.lst @@ -6,54 +6,54 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +* PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" ASAN PM_CL="/EHsc /MD /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" ASAN PM_CL="/EHsc /MD /std:c++17 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" ASAN PM_CL="/EHsc /MD /std:c++20 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /permissive- /Zc:char8_t" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /permissive- /Zc:char8_t" ASAN PM_CL="/EHsc /MDd /std:c++14 /permissive- /Zc:char8_t -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /Zc:char8_t" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /Zc:char8_t" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- /Zc:char8_t -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/BE /c /EHsc /MD /std:c++14" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/BE /c /EHsc /MD /std:c++14" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/char8_t_matrix.lst b/tests/std/tests/char8_t_matrix.lst index c8a45c57151..a5d2eceee4d 100644 --- a/tests/std/tests/char8_t_matrix.lst +++ b/tests/std/tests/char8_t_matrix.lst @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception RUNALL_INCLUDE .\usual_matrix.lst -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /permissive- /w14640 /Zc:threadSafeInit- /Zc:char8_t" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /permissive- /w14640 /Zc:threadSafeInit- /Zc:char8_t" ASAN PM_CL="/EHsc /MDd /std:c++14 /permissive- /w14640 /Zc:threadSafeInit- /Zc:char8_t -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit- /Zc:char8_t" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit- /Zc:char8_t" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit- /Zc:char8_t -fsanitize=address /Zi" PM_LINK="/debug" diff --git a/tests/std/tests/clr_matrix.lst b/tests/std/tests/clr_matrix.lst index 7ef00f89ab5..b753e23fe33 100644 --- a/tests/std/tests/clr_matrix.lst +++ b/tests/std/tests/clr_matrix.lst @@ -3,7 +3,7 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" diff --git a/tests/std/tests/concepts_20_matrix.lst b/tests/std/tests/concepts_20_matrix.lst index 83924fd73c6..03da2121ae6 100644 --- a/tests/std/tests/concepts_20_matrix.lst +++ b/tests/std/tests/concepts_20_matrix.lst @@ -6,38 +6,38 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +* PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++20 /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -# * PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" # TRANSITION, GH-395 -# * PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" # TRANSITION, GH-395 -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +# PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" # TRANSITION, GH-395 +# PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" # TRANSITION, GH-395 +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/concepts_latest_matrix.lst b/tests/std/tests/concepts_latest_matrix.lst index 0add2df18bc..07c13e3bc8f 100644 --- a/tests/std/tests/concepts_latest_matrix.lst +++ b/tests/std/tests/concepts_latest_matrix.lst @@ -3,36 +3,36 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest" RUNALL_CROSSLIST -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:noexceptTypes-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/MD /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MD /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/MD /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:wchar_t-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:wchar_t-" ASAN PM_CL="/MDd /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MDd /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/MDd /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive-" ASAN PM_CL="/MT /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/MT /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /fp:strict" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /fp:strict" ASAN PM_CL="/MTd /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MTd /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive" ASAN PM_CL="/MTd /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/MTd /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -# * PM_CL="/permissive- /BE /c /MD" # TRANSITION, GH-395 -# * PM_CL="/permissive- /BE /c /MTd" # TRANSITION, GH-395 -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MD" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MTd /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +# PM_CL="/permissive- /BE /c /MD" # TRANSITION, GH-395 +# PM_CL="/permissive- /BE /c /MTd" # TRANSITION, GH-395 +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MTd /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/eha_matrix.lst b/tests/std/tests/eha_matrix.lst index 6a387c14ea7..e4080270343 100644 --- a/tests/std/tests/eha_matrix.lst +++ b/tests/std/tests/eha_matrix.lst @@ -3,27 +3,27 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /EHa" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHa" RUNALL_CROSSLIST -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" ASAN PM_CL="/MD /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" ASAN PM_CL="/MD /std:c++17 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" ASAN PM_CL="/MD /std:c++20 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t-" ASAN PM_CL="/MD /std:c++latest /permissive- /Zc:char8_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except" ASAN PM_CL="/MDd /std:c++14 /fp:except -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" ASAN PM_CL="/MDd /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" ASAN PM_CL="/MDd /std:c++20 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict /Zc:noexceptTypes-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict /Zc:noexceptTypes-" ASAN PM_CL="/MTd /std:c++latest /permissive- /fp:strict /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" diff --git a/tests/std/tests/fast_matrix.lst b/tests/std/tests/fast_matrix.lst index 9896ec36601..844ce7ebae9 100644 --- a/tests/std/tests/fast_matrix.lst +++ b/tests/std/tests/fast_matrix.lst @@ -6,5 +6,5 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MT /O2 /GL /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /O2 /GL /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MT /O2 /GL /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" diff --git a/tests/std/tests/fast_no_asan_matrix.lst b/tests/std/tests/fast_no_asan_matrix.lst index 45e1c303a5d..9ec63e83874 100644 --- a/tests/std/tests/fast_no_asan_matrix.lst +++ b/tests/std/tests/fast_no_asan_matrix.lst @@ -7,4 +7,4 @@ # This is for tests that take a long time to execute, so run only one configuration. RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MT /O2 /GL /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /O2 /GL /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" diff --git a/tests/std/tests/floating_point_model_matrix.lst b/tests/std/tests/floating_point_model_matrix.lst index daf4c7c451e..551ad81e924 100644 --- a/tests/std/tests/floating_point_model_matrix.lst +++ b/tests/std/tests/floating_point_model_matrix.lst @@ -3,32 +3,32 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/FIfenv_prefix.hpp /w14640 /Zc:threadSafeInit- /EHsc /std:c++latest" +* PM_CL="/FIfenv_prefix.hpp /w14640 /Zc:threadSafeInit- /EHsc /std:c++latest" RUNALL_CROSSLIST -* PM_CL="" -* PM_CL="/arch:IA32" -* PM_CL="/arch:AVX2" -* PM_CL="/arch:VFPv4" +* PM_CL="" +* PM_CL="/arch:IA32" +* PM_CL="/arch:AVX2" +* PM_CL="/arch:VFPv4" RUNALL_CROSSLIST -* PM_CL="/fp:strict /DFP_CONFIG_PRESET=1 /DTEST_FP_ROUNDING=1" -* PM_CL="/fp:precise /DFP_CONFIG_PRESET=2 /DTEST_FP_ROUNDING=1" -* PM_CL="/fp:precise /DFP_CONFIG_PRESET=2 /DTEST_FP_ROUNDING=0" -* PM_CL="/fp:fast /DFP_CONFIG_PRESET=3 /DTEST_FP_ROUNDING=0" +* PM_CL="/fp:strict /DFP_CONFIG_PRESET=1 /DTEST_FP_ROUNDING=1" +* PM_CL="/fp:precise /DFP_CONFIG_PRESET=2 /DTEST_FP_ROUNDING=1" +* PM_CL="/fp:precise /DFP_CONFIG_PRESET=2 /DTEST_FP_ROUNDING=0" +* PM_CL="/fp:fast /DFP_CONFIG_PRESET=3 /DTEST_FP_ROUNDING=0" RUNALL_CROSSLIST -* PM_CL="/DWITH_FP_ABRUPT_UNDERFLOW=0" -* PM_CL="/DWITH_FP_ABRUPT_UNDERFLOW=1" PM_LINK="loosefpmath.obj" +* PM_CL="/DWITH_FP_ABRUPT_UNDERFLOW=0" +* PM_CL="/DWITH_FP_ABRUPT_UNDERFLOW=1" PM_LINK="loosefpmath.obj" RUNALL_CROSSLIST -* PM_CL="/DFP_CONTRACT_MODE=0 /clang:-ffp-contract=off" -* PM_CL="/DFP_CONTRACT_MODE=1 /clang:-ffp-contract=on" -* PM_CL="/DFP_CONTRACT_MODE=2 /clang:-ffp-contract=fast" +* PM_CL="/DFP_CONTRACT_MODE=0 /clang:-ffp-contract=off" +* PM_CL="/DFP_CONTRACT_MODE=1 /clang:-ffp-contract=on" +* PM_CL="/DFP_CONTRACT_MODE=2 /clang:-ffp-contract=fast" RUNALL_CROSSLIST -* PM_CL="/Od /MDd" +PM_CL="/Od /MDd" ASAN PM_CL="/Od /MDd -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/O2 /MD /permissive-" +PM_CL="/O2 /MD /permissive-" ASAN PM_CL="/O2 /MD /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/O2 /MT /GL" +PM_CL="/O2 /MT /GL" ASAN PM_CL="/O2 /MT /GL -fsanitize=address /Zi" PM_LINK="/debug" # TRANSITION, -Wno-unused-command-line-argument is needed for the internal test harness -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-unused-command-line-argument -Wno-overriding-t-option /Od /MTd" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-unused-command-line-argument -Wno-overriding-t-option /O2 /MT" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-unused-command-line-argument -Wno-overriding-t-option /O2 /MD /Oi-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-unused-command-line-argument -Wno-overriding-t-option /Od /MTd" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-unused-command-line-argument -Wno-overriding-t-option /O2 /MT" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-unused-command-line-argument -Wno-overriding-t-option /O2 /MD /Oi-" diff --git a/tests/std/tests/impure_matrix.lst b/tests/std/tests/impure_matrix.lst index 38bd3b389e3..a1920cd1ed9 100644 --- a/tests/std/tests/impure_matrix.lst +++ b/tests/std/tests/impure_matrix.lst @@ -6,50 +6,50 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +* PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" ASAN PM_CL="/EHsc /MD /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" ASAN PM_CL="/EHsc /MD /std:c++17 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" ASAN PM_CL="/EHsc /MD /std:c++20 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++14 /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/BE /c /EHsc /MD /std:c++14" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/BE /c /EHsc /MD /std:c++14" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/include_each_header_alone_matrix.lst b/tests/std/tests/include_each_header_alone_matrix.lst index 6e610f081b0..5170e7016be 100644 --- a/tests/std/tests/include_each_header_alone_matrix.lst +++ b/tests/std/tests/include_each_header_alone_matrix.lst @@ -3,130 +3,130 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/DNO_TEST_ENVIRONMENT_PREPARER /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="/DNO_TEST_ENVIRONMENT_PREPARER -fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" +PM_CL="/DNO_TEST_ENVIRONMENT_PREPARER /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="/DNO_TEST_ENVIRONMENT_PREPARER -fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/DMEOW_HEADER=algorithm" -* PM_CL="/DMEOW_HEADER=any" -* PM_CL="/DMEOW_HEADER=array" -* PM_CL="/DMEOW_HEADER=atomic" -* PM_CL="/DMEOW_HEADER=barrier" -* PM_CL="/DMEOW_HEADER=bit" -* PM_CL="/DMEOW_HEADER=bitset" -* PM_CL="/DMEOW_HEADER=charconv" -* PM_CL="/DMEOW_HEADER=chrono" -* PM_CL="/DMEOW_HEADER=codecvt" -* PM_CL="/DMEOW_HEADER=compare" -* PM_CL="/DMEOW_HEADER=complex" -* PM_CL="/DMEOW_HEADER=concepts" -* PM_CL="/DMEOW_HEADER=condition_variable" -* PM_CL="/DMEOW_HEADER=coroutine" -* PM_CL="/DMEOW_HEADER=deque" -* PM_CL="/DMEOW_HEADER=exception" -* PM_CL="/DMEOW_HEADER=execution" -* PM_CL="/DMEOW_HEADER=expected" -* PM_CL="/DMEOW_HEADER=filesystem" -* PM_CL="/DMEOW_HEADER=flat_set" -* PM_CL="/DMEOW_HEADER=format" -* PM_CL="/DMEOW_HEADER=forward_list" -* PM_CL="/DMEOW_HEADER=fstream" -* PM_CL="/DMEOW_HEADER=functional" -* PM_CL="/DMEOW_HEADER=future" -* PM_CL="/DMEOW_HEADER=initializer_list" -* PM_CL="/DMEOW_HEADER=iomanip" -* PM_CL="/DMEOW_HEADER=ios" -* PM_CL="/DMEOW_HEADER=iosfwd" -* PM_CL="/DMEOW_HEADER=iostream" -* PM_CL="/DMEOW_HEADER=iso646.h" -* PM_CL="/DMEOW_HEADER=istream" -* PM_CL="/DMEOW_HEADER=iterator" -* PM_CL="/DMEOW_HEADER=latch" -* PM_CL="/DMEOW_HEADER=limits" -* PM_CL="/DMEOW_HEADER=list" -* PM_CL="/DMEOW_HEADER=locale" -* PM_CL="/DMEOW_HEADER=map" -* PM_CL="/DMEOW_HEADER=mdspan" -* PM_CL="/DMEOW_HEADER=memory" -* PM_CL="/DMEOW_HEADER=memory_resource" -* PM_CL="/DMEOW_HEADER=mutex" -* PM_CL="/DMEOW_HEADER=new" -* PM_CL="/DMEOW_HEADER=numbers" -* PM_CL="/DMEOW_HEADER=numeric" -* PM_CL="/DMEOW_HEADER=optional" -* PM_CL="/DMEOW_HEADER=ostream" -* PM_CL="/DMEOW_HEADER=print" -* PM_CL="/DMEOW_HEADER=queue" -* PM_CL="/DMEOW_HEADER=random" -* PM_CL="/DMEOW_HEADER=ranges" -* PM_CL="/DMEOW_HEADER=ratio" -* PM_CL="/DMEOW_HEADER=regex" -* PM_CL="/DMEOW_HEADER=scoped_allocator" -* PM_CL="/DMEOW_HEADER=semaphore" -* PM_CL="/DMEOW_HEADER=set" -* PM_CL="/DMEOW_HEADER=shared_mutex" -* PM_CL="/DMEOW_HEADER=source_location" -* PM_CL="/DMEOW_HEADER=span" -* PM_CL="/DMEOW_HEADER=spanstream" -* PM_CL="/DMEOW_HEADER=sstream" -* PM_CL="/DMEOW_HEADER=stack" -* PM_CL="/DMEOW_HEADER=stacktrace" -* PM_CL="/DMEOW_HEADER=stdatomic.h" -* PM_CL="/DMEOW_HEADER=stdexcept" -* PM_CL="/DMEOW_HEADER=stdfloat" -* PM_CL="/DMEOW_HEADER=stop_token" -* PM_CL="/DMEOW_HEADER=streambuf" -* PM_CL="/DMEOW_HEADER=string" -* PM_CL="/DMEOW_HEADER=string_view" -* PM_CL="/DMEOW_HEADER=strstream" -* PM_CL="/DMEOW_HEADER=syncstream" -* PM_CL="/DMEOW_HEADER=system_error" -* PM_CL="/DMEOW_HEADER=thread" -* PM_CL="/DMEOW_HEADER=tuple" -* PM_CL="/DMEOW_HEADER=type_traits" -* PM_CL="/DMEOW_HEADER=typeindex" -* PM_CL="/DMEOW_HEADER=typeinfo" -* PM_CL="/DMEOW_HEADER=unordered_map" -* PM_CL="/DMEOW_HEADER=unordered_set" -* PM_CL="/DMEOW_HEADER=utility" -* PM_CL="/DMEOW_HEADER=valarray" -* PM_CL="/DMEOW_HEADER=variant" -* PM_CL="/DMEOW_HEADER=vector" -* PM_CL="/DMEOW_HEADER=version" -* PM_CL="/DMEOW_HEADER=experimental/deque" -* PM_CL="/DMEOW_HEADER=experimental/forward_list" -* PM_CL="/DMEOW_HEADER=experimental/list" -* PM_CL="/DMEOW_HEADER=experimental/map" -* PM_CL="/DMEOW_HEADER=experimental/set" -* PM_CL="/DMEOW_HEADER=experimental/string" -* PM_CL="/DMEOW_HEADER=experimental/unordered_map" -* PM_CL="/DMEOW_HEADER=experimental/unordered_set" -* PM_CL="/DMEOW_HEADER=experimental/vector" -* PM_CL="/DMEOW_HEADER=cassert" -* PM_CL="/DMEOW_HEADER=ccomplex /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" -* PM_CL="/DMEOW_HEADER=cctype" -* PM_CL="/DMEOW_HEADER=cerrno" -* PM_CL="/DMEOW_HEADER=cfenv" -* PM_CL="/DMEOW_HEADER=cfloat" -* PM_CL="/DMEOW_HEADER=cinttypes" -* PM_CL="/DMEOW_HEADER=ciso646 /D_SILENCE_CXX20_CISO646_REMOVED_WARNING" -* PM_CL="/DMEOW_HEADER=climits" -* PM_CL="/DMEOW_HEADER=clocale" -* PM_CL="/DMEOW_HEADER=cmath" -* PM_CL="/DMEOW_HEADER=csetjmp" -* PM_CL="/DMEOW_HEADER=csignal" -* PM_CL="/DMEOW_HEADER=cstdalign /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" -* PM_CL="/DMEOW_HEADER=cstdarg" -* PM_CL="/DMEOW_HEADER=cstdbool /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" -* PM_CL="/DMEOW_HEADER=cstddef" -* PM_CL="/DMEOW_HEADER=cstdint" -* PM_CL="/DMEOW_HEADER=cstdio" -* PM_CL="/DMEOW_HEADER=cstdlib" -* PM_CL="/DMEOW_HEADER=cstring" -* PM_CL="/DMEOW_HEADER=ctgmath /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" -* PM_CL="/DMEOW_HEADER=ctime" -* PM_CL="/DMEOW_HEADER=cuchar" -* PM_CL="/DMEOW_HEADER=cwchar" -* PM_CL="/DMEOW_HEADER=cwctype" -* PM_CL="/DMEOW_HEADER=hash_map /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS" -* PM_CL="/DMEOW_HEADER=hash_set /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS" -* PM_CL="/DMEOW_HEADER=experimental/filesystem /D_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING" +PM_CL="/DMEOW_HEADER=algorithm" +PM_CL="/DMEOW_HEADER=any" +PM_CL="/DMEOW_HEADER=array" +PM_CL="/DMEOW_HEADER=atomic" +PM_CL="/DMEOW_HEADER=barrier" +PM_CL="/DMEOW_HEADER=bit" +PM_CL="/DMEOW_HEADER=bitset" +PM_CL="/DMEOW_HEADER=charconv" +PM_CL="/DMEOW_HEADER=chrono" +PM_CL="/DMEOW_HEADER=codecvt" +PM_CL="/DMEOW_HEADER=compare" +PM_CL="/DMEOW_HEADER=complex" +PM_CL="/DMEOW_HEADER=concepts" +PM_CL="/DMEOW_HEADER=condition_variable" +PM_CL="/DMEOW_HEADER=coroutine" +PM_CL="/DMEOW_HEADER=deque" +PM_CL="/DMEOW_HEADER=exception" +PM_CL="/DMEOW_HEADER=execution" +PM_CL="/DMEOW_HEADER=expected" +PM_CL="/DMEOW_HEADER=filesystem" +PM_CL="/DMEOW_HEADER=flat_set" +PM_CL="/DMEOW_HEADER=format" +PM_CL="/DMEOW_HEADER=forward_list" +PM_CL="/DMEOW_HEADER=fstream" +PM_CL="/DMEOW_HEADER=functional" +PM_CL="/DMEOW_HEADER=future" +PM_CL="/DMEOW_HEADER=initializer_list" +PM_CL="/DMEOW_HEADER=iomanip" +PM_CL="/DMEOW_HEADER=ios" +PM_CL="/DMEOW_HEADER=iosfwd" +PM_CL="/DMEOW_HEADER=iostream" +PM_CL="/DMEOW_HEADER=iso646.h" +PM_CL="/DMEOW_HEADER=istream" +PM_CL="/DMEOW_HEADER=iterator" +PM_CL="/DMEOW_HEADER=latch" +PM_CL="/DMEOW_HEADER=limits" +PM_CL="/DMEOW_HEADER=list" +PM_CL="/DMEOW_HEADER=locale" +PM_CL="/DMEOW_HEADER=map" +PM_CL="/DMEOW_HEADER=mdspan" +PM_CL="/DMEOW_HEADER=memory" +PM_CL="/DMEOW_HEADER=memory_resource" +PM_CL="/DMEOW_HEADER=mutex" +PM_CL="/DMEOW_HEADER=new" +PM_CL="/DMEOW_HEADER=numbers" +PM_CL="/DMEOW_HEADER=numeric" +PM_CL="/DMEOW_HEADER=optional" +PM_CL="/DMEOW_HEADER=ostream" +PM_CL="/DMEOW_HEADER=print" +PM_CL="/DMEOW_HEADER=queue" +PM_CL="/DMEOW_HEADER=random" +PM_CL="/DMEOW_HEADER=ranges" +PM_CL="/DMEOW_HEADER=ratio" +PM_CL="/DMEOW_HEADER=regex" +PM_CL="/DMEOW_HEADER=scoped_allocator" +PM_CL="/DMEOW_HEADER=semaphore" +PM_CL="/DMEOW_HEADER=set" +PM_CL="/DMEOW_HEADER=shared_mutex" +PM_CL="/DMEOW_HEADER=source_location" +PM_CL="/DMEOW_HEADER=span" +PM_CL="/DMEOW_HEADER=spanstream" +PM_CL="/DMEOW_HEADER=sstream" +PM_CL="/DMEOW_HEADER=stack" +PM_CL="/DMEOW_HEADER=stacktrace" +PM_CL="/DMEOW_HEADER=stdatomic.h" +PM_CL="/DMEOW_HEADER=stdexcept" +PM_CL="/DMEOW_HEADER=stdfloat" +PM_CL="/DMEOW_HEADER=stop_token" +PM_CL="/DMEOW_HEADER=streambuf" +PM_CL="/DMEOW_HEADER=string" +PM_CL="/DMEOW_HEADER=string_view" +PM_CL="/DMEOW_HEADER=strstream" +PM_CL="/DMEOW_HEADER=syncstream" +PM_CL="/DMEOW_HEADER=system_error" +PM_CL="/DMEOW_HEADER=thread" +PM_CL="/DMEOW_HEADER=tuple" +PM_CL="/DMEOW_HEADER=type_traits" +PM_CL="/DMEOW_HEADER=typeindex" +PM_CL="/DMEOW_HEADER=typeinfo" +PM_CL="/DMEOW_HEADER=unordered_map" +PM_CL="/DMEOW_HEADER=unordered_set" +PM_CL="/DMEOW_HEADER=utility" +PM_CL="/DMEOW_HEADER=valarray" +PM_CL="/DMEOW_HEADER=variant" +PM_CL="/DMEOW_HEADER=vector" +PM_CL="/DMEOW_HEADER=version" +PM_CL="/DMEOW_HEADER=experimental/deque" +PM_CL="/DMEOW_HEADER=experimental/forward_list" +PM_CL="/DMEOW_HEADER=experimental/list" +PM_CL="/DMEOW_HEADER=experimental/map" +PM_CL="/DMEOW_HEADER=experimental/set" +PM_CL="/DMEOW_HEADER=experimental/string" +PM_CL="/DMEOW_HEADER=experimental/unordered_map" +PM_CL="/DMEOW_HEADER=experimental/unordered_set" +PM_CL="/DMEOW_HEADER=experimental/vector" +PM_CL="/DMEOW_HEADER=cassert" +PM_CL="/DMEOW_HEADER=ccomplex /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" +PM_CL="/DMEOW_HEADER=cctype" +PM_CL="/DMEOW_HEADER=cerrno" +PM_CL="/DMEOW_HEADER=cfenv" +PM_CL="/DMEOW_HEADER=cfloat" +PM_CL="/DMEOW_HEADER=cinttypes" +PM_CL="/DMEOW_HEADER=ciso646 /D_SILENCE_CXX20_CISO646_REMOVED_WARNING" +PM_CL="/DMEOW_HEADER=climits" +PM_CL="/DMEOW_HEADER=clocale" +PM_CL="/DMEOW_HEADER=cmath" +PM_CL="/DMEOW_HEADER=csetjmp" +PM_CL="/DMEOW_HEADER=csignal" +PM_CL="/DMEOW_HEADER=cstdalign /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" +PM_CL="/DMEOW_HEADER=cstdarg" +PM_CL="/DMEOW_HEADER=cstdbool /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" +PM_CL="/DMEOW_HEADER=cstddef" +PM_CL="/DMEOW_HEADER=cstdint" +PM_CL="/DMEOW_HEADER=cstdio" +PM_CL="/DMEOW_HEADER=cstdlib" +PM_CL="/DMEOW_HEADER=cstring" +PM_CL="/DMEOW_HEADER=ctgmath /D_SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING" +PM_CL="/DMEOW_HEADER=ctime" +PM_CL="/DMEOW_HEADER=cuchar" +PM_CL="/DMEOW_HEADER=cwchar" +PM_CL="/DMEOW_HEADER=cwctype" +PM_CL="/DMEOW_HEADER=hash_map /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS" +PM_CL="/DMEOW_HEADER=hash_set /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS" +PM_CL="/DMEOW_HEADER=experimental/filesystem /D_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING" diff --git a/tests/std/tests/locale0_implib_cpp_matrix.lst b/tests/std/tests/locale0_implib_cpp_matrix.lst index af72bd645b4..73891267e7c 100644 --- a/tests/std/tests/locale0_implib_cpp_matrix.lst +++ b/tests/std/tests/locale0_implib_cpp_matrix.lst @@ -3,38 +3,38 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- /Zc:noexceptTypes-" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /w14640 /Zc:threadSafeInit- /Zc:preprocessor" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /w14640 /Zc:threadSafeInit- /Zc:preprocessor" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MD /J /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MDd /J /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr:pure /MD /std:c++14" -* PM_CL="/clr:pure /MDd /std:c++14" -* PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit- -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /w14640 /Zc:threadSafeInit- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /w14640 /Zc:threadSafeInit- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /J /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /J /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr:pure /MD /std:c++14" +PM_CL="/clr:pure /MDd /std:c++14" +PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit- -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/rtti_matrix.lst b/tests/std/tests/rtti_matrix.lst index e7c2b16b6fb..568ccf52ab4 100644 --- a/tests/std/tests/rtti_matrix.lst +++ b/tests/std/tests/rtti_matrix.lst @@ -3,8 +3,8 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/GR" -* PM_CL="/GR-" -* PM_CL="/GR- /D_HAS_STATIC_RTTI=0" +PM_CL="/GR" +PM_CL="/GR-" +PM_CL="/GR- /D_HAS_STATIC_RTTI=0" diff --git a/tests/std/tests/strict_concepts_20_matrix.lst b/tests/std/tests/strict_concepts_20_matrix.lst index 6e7a1c4dfc6..e2270db8ff0 100644 --- a/tests/std/tests/strict_concepts_20_matrix.lst +++ b/tests/std/tests/strict_concepts_20_matrix.lst @@ -5,38 +5,38 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /permissive-" +* PM_CL="/w14640 /Zc:threadSafeInit- /permissive-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++20 /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" ASAN PM_CL="/EHsc /MD /std:c++latest -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" ASAN PM_CL="/EHsc /MDd /std:c++latest -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++20 /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest" ASAN PM_CL="/EHsc /MT /std:c++latest -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" ASAN PM_CL="/EHsc /MTd /std:c++latest -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -# * PM_CL="/std:c++20 /BE /c /EHsc /MD" # TRANSITION, GH-395 -# * PM_CL="/std:c++latest /BE /c /EHsc /MTd" # TRANSITION, GH-395 -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /MD" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /MTd /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +# PM_CL="/std:c++20 /BE /c /EHsc /MD" # TRANSITION, GH-395 +# PM_CL="/std:c++latest /BE /c /EHsc /MTd" # TRANSITION, GH-395 +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /MTd /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/strict_concepts_latest_matrix.lst b/tests/std/tests/strict_concepts_latest_matrix.lst index dd37c98f7f0..f513cfefeca 100644 --- a/tests/std/tests/strict_concepts_latest_matrix.lst +++ b/tests/std/tests/strict_concepts_latest_matrix.lst @@ -5,36 +5,36 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /permissive-" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest /permissive-" RUNALL_CROSSLIST -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /Zc:noexceptTypes-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /Zc:noexceptTypes-" ASAN PM_CL="/MD /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1" ASAN PM_CL="/MD -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /Zc:char8_t- /Zc:preprocessor" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/MD /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /Zc:wchar_t-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /Zc:wchar_t-" ASAN PM_CL="/MDd /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1" ASAN PM_CL="/MDd -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /fp:except /Zc:preprocessor" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /fp:except /Zc:preprocessor" ASAN PM_CL="/MDd /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0" ASAN PM_CL="/MT -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /analyze:only /analyze:autolog-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /analyze:only /analyze:autolog-" ASAN PM_CL="/MT /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /fp:strict" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /fp:strict" ASAN PM_CL="/MTd /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1" ASAN PM_CL="/MTd -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /analyze:only /analyze:autolog-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /analyze:only /analyze:autolog-" ASAN PM_CL="/MTd /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -# * PM_CL="/BE /c /MD" # TRANSITION, GH-395 -# * PM_CL="/BE /c /MTd" # TRANSITION, GH-395 -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MD" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MTd /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +# PM_CL="/BE /c /MD" # TRANSITION, GH-395 +# PM_CL="/BE /c /MTd" # TRANSITION, GH-395 +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MTd /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/usual_17_matrix.lst b/tests/std/tests/usual_17_matrix.lst index e4f213a5576..517a5d38ae8 100644 --- a/tests/std/tests/usual_17_matrix.lst +++ b/tests/std/tests/usual_17_matrix.lst @@ -5,50 +5,50 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +* PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" ASAN PM_CL="/EHsc /MD /std:c++17 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" ASAN PM_CL="/EHsc /MD /std:c++20 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/usual_20_matrix.lst b/tests/std/tests/usual_20_matrix.lst index 587b6fb1376..be4602dcfbe 100644 --- a/tests/std/tests/usual_20_matrix.lst +++ b/tests/std/tests/usual_20_matrix.lst @@ -3,38 +3,38 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +* PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++20 /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/BE /c /EHsc /MD /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/BE /c /EHsc /MD /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/usual_latest_matrix.lst b/tests/std/tests/usual_latest_matrix.lst index 9f2882798e0..20dbef6af61 100644 --- a/tests/std/tests/usual_latest_matrix.lst +++ b/tests/std/tests/usual_latest_matrix.lst @@ -3,36 +3,36 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest" +* PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest" RUNALL_CROSSLIST -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:noexceptTypes-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:noexceptTypes-" ASAN PM_CL="/MD /permissive- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MD /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:char8_t-" +PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:char8_t-" ASAN PM_CL="/MD /permissive- /Zc:char8_t- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:wchar_t- /Zc:preprocessor" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /Zc:wchar_t- /Zc:preprocessor" ASAN PM_CL="/MDd /permissive- /Zc:wchar_t- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MDd /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /fp:except /Zc:preprocessor" ASAN PM_CL="/MDd /permissive- /fp:except /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive-" ASAN PM_CL="/MT /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/MT /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /fp:strict" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /permissive- /fp:strict" ASAN PM_CL="/MTd /permissive- /fp:strict -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /permissive-" ASAN PM_CL="/MTd /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive" ASAN PM_CL="/MTd /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /analyze:only /analyze:autolog-" +PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/MTd /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/BE /c /MD /permissive-" -* PM_CL="/BE /c /MTd /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MD" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MTd /fp:strict" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/BE /c /MD /permissive-" +PM_CL="/BE /c /MTd /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MTd /fp:strict" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /permissive- /MT /fp:strict -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/std/tests/usual_matrix.lst b/tests/std/tests/usual_matrix.lst index f9b1c85d0af..97f067fd5d6 100644 --- a/tests/std/tests/usual_matrix.lst +++ b/tests/std/tests/usual_matrix.lst @@ -7,50 +7,50 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MD /std:c++17 /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MD /std:c++20 /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- /Zc:noexceptTypes-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- /Zc:noexceptTypes- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /w14640 /Zc:threadSafeInit- /Zc:preprocessor" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /w14640 /Zc:threadSafeInit- /Zc:preprocessor" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /Zc:wchar_t- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /w14640 /Zc:threadSafeInit- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /w14640 /Zc:threadSafeInit- /Zc:preprocessor" ASAN PM_CL="/EHsc /MDd /std:c++14 /fp:except /w14640 /Zc:threadSafeInit- /Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MDd /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr:pure /MD /std:c++14" -* PM_CL="/clr:pure /MDd /std:c++14" -* PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit- -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr:pure /MD /std:c++14" +PM_CL="/clr:pure /MDd /std:c++14" +PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20 /permissive- /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++latest /permissive- /fp:strict /w14640 /Zc:threadSafeInit- -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/tr1/env.lst b/tests/tr1/env.lst index cf1214badea..f2a0a842d36 100644 --- a/tests/tr1/env.lst +++ b/tests/tr1/env.lst @@ -3,48 +3,48 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" ASAN PM_CL="/EHsc /MD /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" ASAN PM_CL="/EHsc /MD /std:c++17 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" ASAN PM_CL="/EHsc /MD /std:c++20 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14" ASAN PM_CL="/EHsc /MDd /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++20 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/clr:pure /MD /std:c++14" -* PM_CL="/clr:pure /MDd /std:c++14" -* PM_CL="/BE /c /EHsc /MD /std:c++14" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MD /std:c++14" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MDd /std:c++17" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++20 /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++latest /permissive- -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/clr:pure /MD /std:c++14" +PM_CL="/clr:pure /MDd /std:c++14" +PM_CL="/BE /c /EHsc /MD /std:c++14" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MD /std:c++14" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MDd /std:c++17" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++20 /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++latest /permissive- -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/tr1/env_minus_md_idl.lst b/tests/tr1/env_minus_md_idl.lst index 6785496c95e..70db5f6e690 100644 --- a/tests/tr1/env_minus_md_idl.lst +++ b/tests/tr1/env_minus_md_idl.lst @@ -3,40 +3,40 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MD /std:c++17 /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MDd /std:c++14 /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr /MDd /std:c++20 /w14640 /Zc:threadSafeInit-" -* PM_CL="/clr:pure /MD /std:c++14" -* PM_CL="/clr:pure /MDd /std:c++14" -* PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /std:c++20 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr:pure /MD /std:c++14" +PM_CL="/clr:pure /MDd /std:c++14" +PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++latest /permissive- /w14640 /Zc:threadSafeInit- -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/tr1/env_minus_pure.lst b/tests/tr1/env_minus_pure.lst index 0ff98ae1ad6..845a2b811f7 100644 --- a/tests/tr1/env_minus_pure.lst +++ b/tests/tr1/env_minus_pure.lst @@ -3,42 +3,42 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/w14640 /Zc:threadSafeInit-" +* PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" ASAN PM_CL="/EHsc /MD /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" ASAN PM_CL="/EHsc /MD /std:c++17 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MD /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14" ASAN PM_CL="/EHsc /MDd /std:c++14 -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" ASAN PM_CL="/EHsc /MDd /std:c++17 /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MT /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" # No corresponding ASAN config, since the above differs from another config only in IDL -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" ASAN PM_CL="/EHsc /MTd /std:c++latest /permissive- /analyze:only /analyze:autolog- -fsanitize=address /Zi" PM_LINK="/debug" -* PM_CL="/clr /MD /std:c++20" -* PM_CL="/clr /MDd /std:c++20" -* PM_CL="/BE /c /EHsc /MD /std:c++14" -* PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -* PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MD /std:c++14" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MDd /std:c++17" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MTd /std:c++latest /permissive-" -* PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++latest /permissive- -fsanitize=undefined -fno-sanitize-recover=undefined" +PM_CL="/clr /MD /std:c++20" +PM_CL="/clr /MDd /std:c++20" +PM_CL="/BE /c /EHsc /MD /std:c++14" +PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MD /std:c++14" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MDd /std:c++17" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Wno-deprecated-declarations -Wno-self-assign /EHsc /MT /std:c++latest /permissive- -fsanitize=undefined -fno-sanitize-recover=undefined" diff --git a/tests/tr1/env_single.lst b/tests/tr1/env_single.lst index f3e14276afd..7a16a93f272 100644 --- a/tests/tr1/env_single.lst +++ b/tests/tr1/env_single.lst @@ -3,7 +3,7 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" +* PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:autolog- /w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -* PM_CL="" +PM_CL="" ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug" diff --git a/tests/tr1/include/tdefs.h b/tests/tr1/include/tdefs.h index a4cb88d7d66..f3431d4017b 100644 --- a/tests/tr1/include/tdefs.h +++ b/tests/tr1/include/tdefs.h @@ -81,13 +81,13 @@ int total_fail = 0; #ifdef AFMT int afmt = 1; #else // AFMT -int afmt = 0; +int afmt = 0; #endif // AFMT #ifdef TERSE int terse = 1; #else // TERSE -int terse = 0; +int terse = 0; #endif // TERSE #ifdef VERBOSE