зеркало из https://github.com/microsoft/STL.git
Update preprocessor `#else` and `#endif` comment (#3950)
Co-authored-by: Stephan T. Lavavej <stl@nuwen.net>
This commit is contained in:
Родитель
4f97dbb4d6
Коммит
939513b9aa
|
@ -22,7 +22,7 @@
|
|||
// VSO-768746: mbctype.h macroizes _MS, _MP, _M1, and _M2. Include it first for test coverage.
|
||||
#ifndef _MSVC_TESTING_NVCC
|
||||
#include <mbctype.h>
|
||||
#endif // _MSVC_TESTING_NVCC
|
||||
#endif // !defined(_MSVC_TESTING_NVCC)
|
||||
|
||||
#if 1 // TRANSITION, OS-17090155 (UCRT)
|
||||
#define _CRT_DECLARE_NONSTDC_NAMES 0
|
||||
|
@ -30,7 +30,7 @@
|
|||
#include <sys/stat.h>
|
||||
#include <sys/timeb.h>
|
||||
#include <sys/utime.h>
|
||||
#endif // _MSVC_TESTING_NVCC
|
||||
#endif // !defined(_MSVC_TESTING_NVCC)
|
||||
#undef _CRT_DECLARE_NONSTDC_NAMES
|
||||
#endif // TRANSITION, OS-17090155 (UCRT)
|
||||
|
||||
|
@ -154,7 +154,7 @@
|
|||
#include <shared_mutex>
|
||||
#include <stop_token>
|
||||
#include <thread>
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
|
||||
// Non-Core C Wrapper Headers
|
||||
#include <ccomplex>
|
||||
|
@ -176,7 +176,7 @@
|
|||
#include <experimental/unordered_set>
|
||||
#include <experimental/vector>
|
||||
|
||||
#endif // _CORE_HEADERS_ONLY
|
||||
#endif // !defined(_CORE_HEADERS_ONLY)
|
||||
|
||||
#ifndef _MSVC_TESTING_NVCC
|
||||
#include <assert.h>
|
||||
|
@ -229,12 +229,12 @@
|
|||
#ifndef _CORE_HEADERS_ONLY
|
||||
#include <complex.h>
|
||||
#include <new.h>
|
||||
#endif // _CORE_HEADERS_ONLY
|
||||
#endif // !defined(_CORE_HEADERS_ONLY)
|
||||
|
||||
#ifndef _M_CEE_PURE
|
||||
#include <fpieee.h>
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // _MSVC_TESTING_NVCC
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
#endif // !defined(_MSVC_TESTING_NVCC)
|
||||
|
||||
#if !(defined(__CUDACC__) && defined(__clang__))
|
||||
#pragma pop_macro("new")
|
||||
|
|
|
@ -34,9 +34,9 @@ namespace filesystem {
|
|||
#ifndef _FSTREAM_SUPPORTS_EXPERIMENTAL_FILESYSTEM
|
||||
#ifdef _M_CEE
|
||||
#define _FSTREAM_SUPPORTS_EXPERIMENTAL_FILESYSTEM 0
|
||||
#else // _M_CEE
|
||||
#else // ^^^ defined(_M_CEE) / !defined(_M_CEE) vvv
|
||||
#define _FSTREAM_SUPPORTS_EXPERIMENTAL_FILESYSTEM 1
|
||||
#endif // _M_CEE
|
||||
#endif // ^^^ !defined(_M_CEE) ^^^
|
||||
#endif // _FSTREAM_SUPPORTS_EXPERIMENTAL_FILESYSTEM
|
||||
|
||||
#if _FSTREAM_SUPPORTS_EXPERIMENTAL_FILESYSTEM
|
||||
|
|
|
@ -160,7 +160,7 @@ struct
|
|||
constexpr auto _Int_max = static_cast<size_t>(INT_MAX);
|
||||
_STL_INTERNAL_STATIC_ASSERT(__m <= _Int_max);
|
||||
_STL_INTERNAL_STATIC_ASSERT(__n <= _Int_max);
|
||||
#endif // _ENABLE_STL_INTERNAL_CHECK
|
||||
#endif // defined(_ENABLE_STL_INTERNAL_CHECK)
|
||||
|
||||
for (auto& _Elem : __w) {
|
||||
_Elem = 0;
|
||||
|
|
|
@ -24,7 +24,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#define _ACTIVATE_VECTOR_ANNOTATION
|
||||
#define _INSERT_VECTOR_ANNOTATION
|
||||
|
||||
#elif defined(__clang__) // ^^^ __SANITIZE_ADDRESS__ / __clang__ vvv
|
||||
#elif defined(__clang__) // ^^^ defined(__SANITIZE_ADDRESS__) / defined(__clang__) vvv
|
||||
|
||||
#if __has_feature(address_sanitizer)
|
||||
#define _ACTIVATE_STRING_ANNOTATION
|
||||
|
@ -34,41 +34,41 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#pragma comment(linker, "/INFERASANLIBS")
|
||||
#endif // __has_feature(address_sanitizer)
|
||||
|
||||
#else // ^^^ __clang__ / !__clang__ && !__SANITIZE_ADDRESS__ vvv
|
||||
#else // ^^^ defined(__clang__) / !defined(__clang__) && !defined(__SANITIZE_ADDRESS__) vvv
|
||||
|
||||
#ifdef _ANNOTATE_STRING
|
||||
#define _INSERT_STRING_ANNOTATION
|
||||
#endif // _ANNOTATE_STRING
|
||||
#endif // defined(_ANNOTATE_STRING)
|
||||
#ifdef _ANNOTATE_VECTOR
|
||||
#define _INSERT_VECTOR_ANNOTATION
|
||||
#endif // _ANNOTATE_VECTOR
|
||||
#endif // defined(_ANNOTATE_VECTOR)
|
||||
|
||||
#endif // __SANITIZE_ADDRESS__
|
||||
#endif // ^^^ !defined(__clang__) && !defined(__SANITIZE_ADDRESS__) ^^^
|
||||
|
||||
#ifdef _DISABLE_STRING_ANNOTATION
|
||||
#undef _ACTIVATE_STRING_ANNOTATION
|
||||
#undef _INSERT_STRING_ANNOTATION
|
||||
#endif // _DISABLE_STRING_ANNOTATION
|
||||
#endif // defined(_DISABLE_STRING_ANNOTATION)
|
||||
#ifdef _DISABLE_VECTOR_ANNOTATION
|
||||
#undef _ACTIVATE_VECTOR_ANNOTATION
|
||||
#undef _INSERT_VECTOR_ANNOTATION
|
||||
#endif // _DISABLE_VECTOR_ANNOTATION
|
||||
#endif // defined(_DISABLE_VECTOR_ANNOTATION)
|
||||
|
||||
#ifndef _INSERT_STRING_ANNOTATION
|
||||
#pragma detect_mismatch("annotate_string", "0")
|
||||
#endif // !_INSERT_STRING_ANNOTATION
|
||||
#endif // !defined(_INSERT_STRING_ANNOTATION)
|
||||
#ifndef _INSERT_VECTOR_ANNOTATION
|
||||
#pragma detect_mismatch("annotate_vector", "0")
|
||||
#endif // !_INSERT_VECTOR_ANNOTATION
|
||||
#endif // !defined(_INSERT_VECTOR_ANNOTATION)
|
||||
|
||||
#ifdef _ACTIVATE_STRING_ANNOTATION
|
||||
#pragma comment(lib, "stl_asan")
|
||||
#pragma detect_mismatch("annotate_string", "1")
|
||||
#endif // _ACTIVATE_STRING_ANNOTATION
|
||||
#endif // defined(_ACTIVATE_STRING_ANNOTATION)
|
||||
#ifdef _ACTIVATE_VECTOR_ANNOTATION
|
||||
#pragma comment(lib, "stl_asan")
|
||||
#pragma detect_mismatch("annotate_vector", "1")
|
||||
#endif // _ACTIVATE_VECTOR_ANNOTATION
|
||||
#endif // defined(_ACTIVATE_VECTOR_ANNOTATION)
|
||||
|
||||
#undef _ACTIVATE_STRING_ANNOTATION
|
||||
#undef _ACTIVATE_VECTOR_ANNOTATION
|
||||
|
@ -123,7 +123,7 @@ void __cdecl __sanitizer_annotate_contiguous_container(
|
|||
|
||||
#endif // insert asan annotations
|
||||
|
||||
#endif // !_M_CEE_PURE && asan not disabled
|
||||
#endif // !defined(_M_CEE_PURE) && asan not disabled
|
||||
|
||||
#pragma pop_macro("new")
|
||||
_STL_RESTORE_CLANG_WARNINGS
|
||||
|
|
|
@ -107,7 +107,7 @@ public:
|
|||
_NODISCARD _CONSTEXPR17 bool operator<(const _Array_const_iterator& _Right) const noexcept {
|
||||
return _Ptr < _Right._Ptr;
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
using _Prevent_inheriting_unwrap = _Array_const_iterator;
|
||||
|
||||
|
@ -213,7 +213,7 @@ private:
|
|||
_Compat(_Right);
|
||||
return _Idx < _Right._Idx;
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_CONSTEXPR17 void _Compat(const _Array_const_iterator& _Right) const noexcept { // test for compatible iterator pair
|
||||
_STL_VERIFY(_Ptr == _Right._Ptr, "array iterators incompatible");
|
||||
|
@ -237,7 +237,7 @@ private:
|
|||
private:
|
||||
pointer _Ptr; // beginning of array
|
||||
size_t _Idx; // offset into array
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
|
||||
public:
|
||||
_NODISCARD _CONSTEXPR17 _Array_const_iterator operator+(const ptrdiff_t _Off) const noexcept {
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#ifdef _M_CEE_PURE
|
||||
#error <atomic> is not supported when compiling with /clr:pure.
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // defined(_M_CEE_PURE)
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
@ -42,15 +42,15 @@ extern "C" _NODISCARD unsigned char __stdcall __std_atomic_compare_exchange_128(
|
|||
_Inout_bytecount_(16) long long* _ComparandResult) noexcept;
|
||||
extern "C" _NODISCARD char __stdcall __std_atomic_has_cmpxchg16b() noexcept;
|
||||
#define _STD_COMPARE_EXCHANGE_128 __std_atomic_compare_exchange_128
|
||||
#endif // _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B == 1
|
||||
#endif // _WIN64
|
||||
#endif // ^^^ _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B == 0 ^^^
|
||||
#endif // defined(_WIN64)
|
||||
|
||||
// Controls whether atomic::is_always_lock_free triggers for sizeof(void *) or 2 * sizeof(void *)
|
||||
#if _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B == 1 || !defined(_M_X64) || defined(_M_ARM64EC)
|
||||
#define _ATOMIC_HAS_DCAS 1
|
||||
#else // ^^^ We always have DCAS / We only sometimes have DCAS vvv
|
||||
#define _ATOMIC_HAS_DCAS 0
|
||||
#endif // _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B == 1 || !defined(_M_X64) || defined(_M_ARM64EC)
|
||||
#endif // ^^^ We only sometimes have DCAS ^^^
|
||||
|
||||
// Controls whether ARM64 ldar/ldapr/stlr should be used
|
||||
#ifndef _STD_ATOMIC_USE_ARM64_LDAR_STLR
|
||||
|
@ -62,7 +62,7 @@ extern "C" _NODISCARD char __stdcall __std_atomic_has_cmpxchg16b() noexcept;
|
|||
#endif // ^^^ __load_acquire/__stlr intrinsics are available ^^^
|
||||
#else // ^^^ ARM64/ARM64EC / Other architectures vvv
|
||||
#define _STD_ATOMIC_USE_ARM64_LDAR_STLR 0
|
||||
#endif // defined(_M_ARM64) || defined(_M_ARM64EC)
|
||||
#endif // ^^^ Other architectures ^^^
|
||||
#endif // _STD_ATOMIC_USE_ARM64_LDAR_STLR
|
||||
|
||||
#define ATOMIC_BOOL_LOCK_FREE 2
|
||||
|
@ -219,9 +219,9 @@ extern "C" inline void _Check_memory_order(const unsigned int _Order) noexcept {
|
|||
__stlr##_Width( \
|
||||
reinterpret_cast<volatile unsigned __int##_Width*>(_Ptr), static_cast<unsigned __int##_Width>(_Desired)); \
|
||||
_Memory_barrier();
|
||||
#else
|
||||
#else // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 / _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 vvv
|
||||
#define _ATOMIC_STORE_SEQ_CST_ARM64 _ATOMIC_STORE_SEQ_CST_ARM
|
||||
#endif
|
||||
#endif // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 ^^^
|
||||
|
||||
#define _ATOMIC_STORE_SEQ_CST_X86_X64(_Width, _Ptr, _Desired) (void) _InterlockedExchange##_Width((_Ptr), (_Desired));
|
||||
#define _ATOMIC_STORE_32_SEQ_CST_X86_X64(_Ptr, _Desired) \
|
||||
|
@ -250,7 +250,7 @@ extern "C" inline void _Check_memory_order(const unsigned int _Order) noexcept {
|
|||
#endif // ^^^ x64 ^^^
|
||||
#else // ^^^ x86/x64 / Unsupported hardware vvv
|
||||
#error "Unsupported hardware"
|
||||
#endif
|
||||
#endif // ^^^ Unsupported hardware ^^^
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable : 6001) // "Using uninitialized memory '_Guard'"
|
||||
|
@ -276,7 +276,7 @@ extern "C" inline void _Atomic_thread_fence(const unsigned int _Order) noexcept
|
|||
_Memory_barrier();
|
||||
#else // ^^^ ARM32/ARM64/ARM64EC / unsupported hardware vvv
|
||||
#error Unsupported hardware
|
||||
#endif // unsupported hardware
|
||||
#endif // ^^^ unsupported hardware ^^^
|
||||
}
|
||||
#pragma warning(pop)
|
||||
|
||||
|
@ -469,7 +469,7 @@ struct _Atomic_padded<_Ty&, false> {
|
|||
_Ty& _Value;
|
||||
};
|
||||
|
||||
#endif // TRANSITION, ABI
|
||||
#endif // ^^^ break ABI ^^^
|
||||
|
||||
template <class _Ty>
|
||||
struct _Atomic_storage_types {
|
||||
|
@ -487,7 +487,7 @@ struct _Atomic_storage_types<_Ty&> {
|
|||
template <class _Ty, size_t = sizeof(remove_reference_t<_Ty>)>
|
||||
#else // ^^^ don't break ABI / break ABI vvv
|
||||
template <class _Ty, size_t = _Atomic_storage_traits<_Ty>::_Storage_size>
|
||||
#endif // TRANSITION, ABI
|
||||
#endif // ^^^ break ABI ^^^
|
||||
struct _Atomic_storage;
|
||||
|
||||
#if _HAS_CXX20
|
||||
|
@ -706,7 +706,7 @@ struct _Atomic_storage {
|
|||
return;
|
||||
}
|
||||
} else
|
||||
#endif // #if _CMPXCHG_MASK_OUT_PADDING_BITS
|
||||
#endif // _CMPXCHG_MASK_OUT_PADDING_BITS
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -743,7 +743,7 @@ public:
|
|||
#else // ^^^ don't break ABI / break ABI vvv
|
||||
_Ty _Storage;
|
||||
mutable _Smtx_t _Mutex{};
|
||||
#endif // TRANSITION, ABI
|
||||
#endif // ^^^ break ABI ^^^
|
||||
};
|
||||
|
||||
template <class _Ty>
|
||||
|
@ -787,10 +787,10 @@ struct _Atomic_storage<_Ty, 1> { // lock-free using 1-byte intrinsics
|
|||
char _As_bytes;
|
||||
#if _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1
|
||||
_ATOMIC_LOAD_ARM64(_As_bytes, 8, _Mem, static_cast<unsigned int>(_Order))
|
||||
#else
|
||||
#else // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 / _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 vvv
|
||||
_As_bytes = __iso_volatile_load8(_Mem);
|
||||
_ATOMIC_POST_LOAD_BARRIER_AS_NEEDED(static_cast<unsigned int>(_Order))
|
||||
#endif
|
||||
#endif // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 ^^^
|
||||
return reinterpret_cast<_TVal&>(_As_bytes);
|
||||
}
|
||||
|
||||
|
@ -895,10 +895,10 @@ struct _Atomic_storage<_Ty, 2> { // lock-free using 2-byte intrinsics
|
|||
short _As_bytes;
|
||||
#if _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1
|
||||
_ATOMIC_LOAD_ARM64(_As_bytes, 16, _Mem, static_cast<unsigned int>(_Order))
|
||||
#else
|
||||
#else // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 / _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 vvv
|
||||
_As_bytes = __iso_volatile_load16(_Mem);
|
||||
_ATOMIC_POST_LOAD_BARRIER_AS_NEEDED(static_cast<unsigned int>(_Order))
|
||||
#endif
|
||||
#endif // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 ^^^
|
||||
return reinterpret_cast<_TVal&>(_As_bytes);
|
||||
}
|
||||
|
||||
|
@ -1002,10 +1002,10 @@ struct _Atomic_storage<_Ty, 4> { // lock-free using 4-byte intrinsics
|
|||
int _As_bytes;
|
||||
#if _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1
|
||||
_ATOMIC_LOAD_ARM64(_As_bytes, 32, _Mem, static_cast<unsigned int>(_Order))
|
||||
#else
|
||||
#else // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1 / _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 vvv
|
||||
_As_bytes = __iso_volatile_load32(_Mem);
|
||||
_ATOMIC_POST_LOAD_BARRIER_AS_NEEDED(static_cast<unsigned int>(_Order))
|
||||
#endif
|
||||
#endif // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR == 0 ^^^
|
||||
return reinterpret_cast<_TVal&>(_As_bytes);
|
||||
}
|
||||
|
||||
|
@ -1122,7 +1122,7 @@ struct _Atomic_storage<_Ty, 8> { // lock-free using 8-byte intrinsics
|
|||
#endif
|
||||
|
||||
_ATOMIC_POST_LOAD_BARRIER_AS_NEEDED(static_cast<unsigned int>(_Order))
|
||||
#endif // _STD_ATOMIC_USE_ARM64_LDAR_STLR == 1
|
||||
#endif // ^^^ _STD_ATOMIC_USE_ARM64_LDAR_STLR != 1 ^^^
|
||||
return reinterpret_cast<_TVal&>(_As_bytes);
|
||||
}
|
||||
|
||||
|
@ -1677,7 +1677,7 @@ _INLINE_VAR constexpr bool _Is_always_lock_free = _TypeSize <= 2 * sizeof(void*)
|
|||
template <size_t _TypeSize>
|
||||
_INLINE_VAR constexpr bool _Is_always_lock_free = _TypeSize <= sizeof(void*);
|
||||
#endif // _ATOMIC_HAS_DCAS
|
||||
#endif // break ABI
|
||||
#endif // ^^^ break ABI ^^^
|
||||
|
||||
template <class _Ty, bool _Is_lock_free = _Is_always_lock_free<sizeof(_Ty)>>
|
||||
_INLINE_VAR constexpr bool _Deprecate_non_lock_free_volatile = true;
|
||||
|
@ -2010,7 +2010,7 @@ struct _Atomic_pointer : _Atomic_storage<_Ty> {
|
|||
#else // ^^^ 32 bits / 64 bits vvv
|
||||
_ATOMIC_CHOOSE_INTRINSIC(static_cast<unsigned int>(_Order), _Result, _InterlockedExchangeAdd64,
|
||||
_Atomic_address_as<long long>(this->_Storage), _Shift_bytes);
|
||||
#endif // hardware
|
||||
#endif // ^^^ 64 bits ^^^
|
||||
return reinterpret_cast<_Ty>(_Result);
|
||||
}
|
||||
|
||||
|
@ -2106,7 +2106,7 @@ struct _Atomic_pointer<_Ty&> : _Atomic_storage<_Ty&> {
|
|||
#else // ^^^ 32 bits / 64 bits vvv
|
||||
_ATOMIC_CHOOSE_INTRINSIC(static_cast<unsigned int>(_Order), _Result, _InterlockedExchangeAdd64,
|
||||
_Atomic_address_as<long long>(this->_Storage), _Shift_bytes);
|
||||
#endif // hardware
|
||||
#endif // ^^^ 64 bits ^^^
|
||||
return reinterpret_cast<_Ty>(_Result);
|
||||
}
|
||||
|
||||
|
@ -2159,7 +2159,7 @@ using _Choose_atomic_base_t =
|
|||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
template <class _TVal, class _Ty = _TVal>
|
||||
using _Choose_atomic_base_t = _Choose_atomic_base2_t<_TVal, _Ty>;
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_EXPORT_STD template <class _Ty>
|
||||
struct atomic : _Choose_atomic_base_t<_Ty> { // atomic value
|
||||
|
@ -2200,7 +2200,7 @@ public:
|
|||
return sizeof(_Ty) <= sizeof(void*) || (sizeof(_Ty) <= 2 * sizeof(void*) && __std_atomic_has_cmpxchg16b());
|
||||
#endif // _ATOMIC_HAS_DCAS
|
||||
}
|
||||
#endif // TRANSITION, ABI
|
||||
#endif // ^^^ break ABI ^^^
|
||||
|
||||
_NODISCARD bool is_lock_free() const noexcept {
|
||||
return static_cast<const volatile atomic*>(this)->is_lock_free();
|
||||
|
@ -2885,7 +2885,7 @@ _EXPORT_STD struct atomic_flag { // flag with test-and-set semantics
|
|||
atomic<long> _Storage;
|
||||
#else // ^^^ don't break ABI / break ABI vvv
|
||||
atomic<bool> _Storage;
|
||||
#endif // TRANSITION, ABI
|
||||
#endif // ^^^ break ABI ^^^
|
||||
};
|
||||
|
||||
#if _HAS_CXX20
|
||||
|
|
|
@ -74,7 +74,7 @@ private:
|
|||
(void) _Pos;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 0 / _ITERATOR_DEBUG_LEVEL != 0 vvv
|
||||
_STL_VERIFY(_Pos < _Bits, "bitset index outside range");
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
}
|
||||
|
||||
constexpr bool _Subscript(size_t _Pos) const noexcept {
|
||||
|
|
|
@ -2609,6 +2609,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ _HAS_CXX17 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _CHARCONV_
|
||||
|
|
|
@ -24,7 +24,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
|
||||
#ifdef _M_CEE_PURE
|
||||
#error <condition_variable> is not supported when compiling with /clr:pure.
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // defined(_M_CEE_PURE)
|
||||
|
||||
_STD_BEGIN
|
||||
template <class _Lock>
|
||||
|
|
|
@ -263,7 +263,7 @@ _STL_RESTORE_CLANG_WARNINGS
|
|||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif // <coroutine> is available
|
||||
#endif // ^^^ no /await ^^^
|
||||
#endif // ^^^ defined(__cpp_lib_coroutine) ^^^
|
||||
#endif // ^^^ !defined(_RESUMABLE_FUNCTIONS_SUPPORTED) ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _COROUTINE_
|
||||
|
|
|
@ -137,7 +137,7 @@ public:
|
|||
_NODISCARD bool operator>=(const _Deque_unchecked_const_iterator& _Right) const noexcept {
|
||||
return !(*this < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
const _Container_base12* _Getcont() const noexcept { // get container pointer
|
||||
return _Mycont;
|
||||
|
@ -383,7 +383,7 @@ public:
|
|||
_NODISCARD bool operator>=(const _Deque_const_iterator& _Right) const noexcept {
|
||||
return !(*this < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
void _Compat(const _Deque_const_iterator& _Right) const noexcept { // test for compatible iterator pair
|
||||
#if _ITERATOR_DEBUG_LEVEL == 0
|
||||
|
@ -414,7 +414,7 @@ public:
|
|||
_Mycont->_Myoff <= this->_Myoff + _Off && this->_Myoff + _Off <= _Mycont->_Myoff + _Mycont->_Mysize,
|
||||
"cannot seek deque iterator out of range");
|
||||
}
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
}
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL != 0
|
||||
|
|
|
@ -203,7 +203,7 @@ _EXPORT_STD using _STDEXT bad_exception;
|
|||
|
||||
_STD_END
|
||||
|
||||
#endif // _HAS_EXCEPTIONS
|
||||
#endif // ^^^ !_HAS_EXCEPTIONS ^^^
|
||||
|
||||
extern "C++" _CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL __ExceptionPtrCreate(_Out_ void*) noexcept;
|
||||
extern "C++" _CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL __ExceptionPtrDestroy(_Inout_ void*) noexcept;
|
||||
|
|
|
@ -5217,6 +5217,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ _HAS_CXX17 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _EXECUTION_
|
||||
|
|
|
@ -121,7 +121,7 @@ namespace experimental {
|
|||
_STD exchange(_Coro, nullptr).promise()._Rethrow_if_exception();
|
||||
#else // ^^^ defined(_CPPUNWIND) / !defined(_CPPUNWIND) vvv
|
||||
_Coro = nullptr;
|
||||
#endif // _CPPUNWIND
|
||||
#endif // ^^^ !defined(_CPPUNWIND) ^^^
|
||||
}
|
||||
|
||||
return *this;
|
||||
|
@ -156,7 +156,7 @@ namespace experimental {
|
|||
if (_Coro.done()) {
|
||||
#ifdef _CPPUNWIND
|
||||
_Coro.promise()._Rethrow_if_exception();
|
||||
#endif // _CPPUNWIND
|
||||
#endif // ^^^ defined(_CPPUNWIND) ^^^
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1374,7 +1374,7 @@ namespace filesystem {
|
|||
_NODISCARD_FRIEND bool operator>=(const path& _Left, const path& _Right) noexcept {
|
||||
return _Left.compare(_Right) >= 0;
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_NODISCARD_FRIEND path operator/(const path& _Left, const path& _Right) { // append a pair of paths together
|
||||
path _Tmp = _Left;
|
||||
|
@ -2454,7 +2454,7 @@ namespace filesystem {
|
|||
_NODISCARD bool operator>=(const directory_entry& _Rhs) const noexcept {
|
||||
return _Path >= _Rhs._Path;
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
// [fs.dir.entry.io], inserter
|
||||
template <class _Elem, class _Traits>
|
||||
|
@ -4430,6 +4430,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ _HAS_CXX17 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _FILESYSTEM_
|
||||
|
|
|
@ -4137,6 +4137,6 @@ _STL_RESTORE_CLANG_WARNINGS
|
|||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif // defined(__cpp_lib_concepts)
|
||||
#endif // ^^^ defined(__cpp_lib_concepts) ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _FORMAT_
|
||||
|
|
|
@ -1468,7 +1468,7 @@ private:
|
|||
if constexpr (!_Alnode_traits::is_always_equal::value) {
|
||||
_STL_VERIFY(_Getal() == _Right._Getal(), "forward_list containers incompatible for splice_after");
|
||||
}
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL == 2
|
||||
if (this != _STD addressof(_Right)) {
|
||||
|
@ -1497,7 +1497,7 @@ private:
|
|||
if constexpr (!_Alnode_traits::is_always_equal::value) {
|
||||
_STL_VERIFY(_Getal() == _Right._Getal(), "forward_list containers incompatible for splice_after");
|
||||
}
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
|
||||
if (_First == _Last) {
|
||||
return;
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#ifdef _M_CEE_PURE
|
||||
#error <future> is not supported when compiling with /clr:pure.
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // defined(_M_CEE_PURE)
|
||||
|
||||
#ifdef _RESUMABLE_FUNCTIONS_SUPPORTED
|
||||
#include <experimental/resumable>
|
||||
|
|
|
@ -1635,7 +1635,7 @@ public:
|
|||
_NODISCARD constexpr bool operator>=(const checked_array_iterator& _Right) const noexcept {
|
||||
return !(*this < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
friend constexpr void _Verify_range(
|
||||
const checked_array_iterator& _First, const checked_array_iterator& _Last) noexcept {
|
||||
|
@ -1804,7 +1804,7 @@ public:
|
|||
_NODISCARD constexpr bool operator>=(const unchecked_array_iterator& _Right) const noexcept {
|
||||
return !(*this < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL != 0
|
||||
friend constexpr void _Verify_range(
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#ifdef _M_CEE_PURE
|
||||
#error <latch> is not supported when compiling with /clr:pure.
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // defined(_M_CEE_PURE)
|
||||
|
||||
#if !_HAS_CXX20
|
||||
_EMIT_STL_WARNING(STL4038, "The contents of <latch> are available only with C++20 or later.");
|
||||
|
|
|
@ -370,7 +370,7 @@ public:
|
|||
}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL != 2 vvv
|
||||
(void) _Ptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 2
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
}
|
||||
|
||||
void _Orphan_non_end() noexcept { // orphan iterators except end()
|
||||
|
@ -985,7 +985,7 @@ public:
|
|||
return _Result;
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
(void) _Result;
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
}
|
||||
|
||||
template <class... _Valty>
|
||||
|
@ -996,7 +996,7 @@ public:
|
|||
return _Result;
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
(void) _Result;
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
}
|
||||
|
||||
template <class... _Valty>
|
||||
|
|
|
@ -1843,7 +1843,7 @@ private:
|
|||
|
||||
template <class _Ty0, class _Alloc, class... _Types>
|
||||
friend shared_ptr<_Ty0> allocate_shared(const _Alloc& _Al_arg, _Types&&... _Args);
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
template <class _Ux>
|
||||
void _Set_ptr_rep_and_enable_shared(_Ux* const _Px, _Ref_count_base* const _Rx) noexcept { // take ownership of _Px
|
||||
|
@ -3009,7 +3009,7 @@ public:
|
|||
static constexpr bool
|
||||
_Must_avoid_expired_conversions_from<_Ty2, decltype(static_cast<const _Ty2*>(static_cast<_Ty*>(nullptr)))> =
|
||||
false;
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // ^^^ !defined(_M_CEE_PURE) ^^^
|
||||
|
||||
constexpr weak_ptr() noexcept {}
|
||||
|
||||
|
|
|
@ -751,6 +751,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ _HAS_CXX17 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _MEMORY_RESOURCE_
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#ifdef _M_CEE_PURE
|
||||
#error <mutex> is not supported when compiling with /clr:pure.
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // defined(_M_CEE_PURE)
|
||||
|
||||
#include <__msvc_chrono.hpp>
|
||||
#include <cstdlib>
|
||||
|
@ -43,7 +43,7 @@ public:
|
|||
_Mutex_base(int _Flags = 0) noexcept {
|
||||
_Mtx_init_in_situ(_Mymtx(), _Flags | _Mtx_try);
|
||||
}
|
||||
#endif // !_ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR
|
||||
#endif // ^^^ !_ENABLE_CONSTEXPR_MUTEX_CONSTRUCTOR ^^^
|
||||
|
||||
~_Mutex_base() noexcept {
|
||||
_Mtx_destroy_in_situ(_Mymtx());
|
||||
|
|
|
@ -102,7 +102,7 @@ _EXPORT_STD inline constexpr size_t hardware_constructive_interference_size = 64
|
|||
_EXPORT_STD inline constexpr size_t hardware_destructive_interference_size = 64;
|
||||
#else // ^^^ supported hardware / unsupported hardware vvv
|
||||
#error Unsupported architecture
|
||||
#endif // hardware
|
||||
#endif // ^^^ unsupported hardware ^^^
|
||||
|
||||
#endif // _HAS_CXX17
|
||||
|
||||
|
|
|
@ -144,6 +144,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ _HAS_CXX20 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _NUMBERS_
|
||||
|
|
|
@ -35,7 +35,7 @@ _NODISCARD _CONSTEXPR20 _Ty accumulate(const _InIt _First, const _InIt _Last, _T
|
|||
_Val = _Reduce_op(_STD move(_Val), *_UFirst);
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
_Val = _Reduce_op(_Val, *_UFirst);
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
}
|
||||
return _Val;
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ _Ty _Reduce_plus_arithmetic_ranges(_InIt _First, const _InIt _Last, _Ty _Val) {
|
|||
#else // ^^^ _STD_VECTORIZE_WITH_FLOAT_CONTROL / !_STD_VECTORIZE_WITH_FLOAT_CONTROL vvv
|
||||
template <class _InIt, class _Ty, class _BinOp>
|
||||
inline constexpr bool _Plus_on_arithmetic_ranges_reduction_v = false;
|
||||
#endif // _STD_VECTORIZE_WITH_FLOAT_CONTROL
|
||||
#endif // ^^^ !_STD_VECTORIZE_WITH_FLOAT_CONTROL ^^^
|
||||
|
||||
_EXPORT_STD template <class _InIt, class _Ty, class _BinOp>
|
||||
_NODISCARD _CONSTEXPR20 _Ty reduce(const _InIt _First, const _InIt _Last, _Ty _Val, _BinOp _Reduce_op) {
|
||||
|
@ -137,7 +137,7 @@ _NODISCARD _CONSTEXPR20 _Ty inner_product(
|
|||
_Val = _Reduce_op(_STD move(_Val), _Transform_op(*_UFirst1, *_UFirst2)); // Requirement missing from N4950
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
_Val = _Reduce_op(_Val, _Transform_op(*_UFirst1, *_UFirst2)); // Requirement missing from N4950
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
}
|
||||
|
||||
return _Val;
|
||||
|
@ -171,7 +171,7 @@ _Ty _Transform_reduce_arithmetic_defaults(_InIt1 _First1, const _InIt1 _Last1, _
|
|||
#else // ^^^ _STD_VECTORIZE_WITH_FLOAT_CONTROL / !_STD_VECTORIZE_WITH_FLOAT_CONTROL vvv
|
||||
template <class _InIt1, class _InIt2, class _Ty, class _BinOp1, class _BinOp2>
|
||||
inline constexpr bool _Default_ops_transform_reduce_v = false;
|
||||
#endif // _STD_VECTORIZE_WITH_FLOAT_CONTROL
|
||||
#endif // ^^^ !_STD_VECTORIZE_WITH_FLOAT_CONTROL ^^^
|
||||
|
||||
_EXPORT_STD template <class _InIt1, class _InIt2, class _Ty, class _BinOp1, class _BinOp2>
|
||||
_NODISCARD _CONSTEXPR20 _Ty transform_reduce(
|
||||
|
@ -260,7 +260,7 @@ _CONSTEXPR20 _OutIt partial_sum(const _InIt _First, const _InIt _Last, _OutIt _D
|
|||
_Val = _Reduce_op(_STD move(_Val), *_UFirst);
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
_Val = _Reduce_op(_Val, *_UFirst);
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -484,7 +484,7 @@ _CONSTEXPR20 _OutIt adjacent_difference(const _InIt _First, const _InIt _Last, _
|
|||
*++_UDest = _Func(_Tmp, _STD move(_Val));
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
*++_UDest = _Func(_Tmp, _Val);
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
_Val = _STD move(_Tmp);
|
||||
}
|
||||
|
||||
|
|
|
@ -797,7 +797,7 @@ template <class _Ty>
|
|||
_NODISCARD constexpr bool operator>=(nullopt_t, const optional<_Ty>& _Right) noexcept {
|
||||
return !_Right.has_value();
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
template <class _Ty>
|
||||
using _Enable_if_bool_convertible = enable_if_t<is_convertible_v<_Ty, bool>, int>;
|
||||
|
@ -987,6 +987,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ _HAS_CXX17 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _OPTIONAL_
|
||||
|
|
|
@ -117,7 +117,7 @@ public:
|
|||
const bool _Zero_uncaught_exceptions = !_STD uncaught_exception(); // TRANSITION, ArchivedOS-12000909
|
||||
#else // ^^^ _HAS_DEPRECATED_UNCAUGHT_EXCEPTION / !_HAS_DEPRECATED_UNCAUGHT_EXCEPTION vvv
|
||||
const bool _Zero_uncaught_exceptions = _STD uncaught_exceptions() == 0;
|
||||
#endif // !_HAS_DEPRECATED_UNCAUGHT_EXCEPTION
|
||||
#endif // ^^^ !_HAS_DEPRECATED_UNCAUGHT_EXCEPTION ^^^
|
||||
|
||||
if (_Zero_uncaught_exceptions) {
|
||||
this->_Myostr._Osfx();
|
||||
|
@ -184,7 +184,7 @@ public:
|
|||
_Pfn(*this);
|
||||
return *this;
|
||||
}
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // defined(_M_CEE_PURE)
|
||||
|
||||
basic_ostream& __CLR_OR_THIS_CALL operator<<(basic_ostream&(__cdecl* _Pfn)(basic_ostream&) ) {
|
||||
// call basic_ostream manipulator
|
||||
|
|
|
@ -165,6 +165,6 @@ _STL_RESTORE_CLANG_WARNINGS
|
|||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
|
||||
#endif // defined(__cpp_lib_print)
|
||||
#endif // ^^^ defined(__cpp_lib_print) ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _PRINT_
|
||||
|
|
|
@ -135,9 +135,9 @@ public:
|
|||
decltype(auto) emplace(_Valty&&... _Val) {
|
||||
#if _HAS_CXX17
|
||||
return c.emplace_back(_STD forward<_Valty>(_Val)...);
|
||||
#else // ^^^ C++17 or newer / C++14 vvv
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
c.emplace_back(_STD forward<_Valty>(_Val)...);
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
}
|
||||
|
||||
void pop() noexcept(noexcept(c.pop_front())) /* strengthened */ {
|
||||
|
|
|
@ -26,9 +26,9 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
|
||||
#ifdef _ALLOW_RANDOM_DISTRIBUTION_CONST_OPERATOR
|
||||
#define _DISTRIBUTION_CONST const
|
||||
#else // ^^^ _ALLOW_RANDOM_DISTRIBUTION_CONST_OPERATOR / !_ALLOW_RANDOM_DISTRIBUTION_CONST_OPERATOR vvv
|
||||
#else
|
||||
#define _DISTRIBUTION_CONST
|
||||
#endif // _ALLOW_RANDOM_DISTRIBUTION_CONST_OPERATOR
|
||||
#endif
|
||||
|
||||
_STD_BEGIN
|
||||
#define _RNG_PROHIBIT_CHAR(_CheckedType) \
|
||||
|
|
|
@ -99,7 +99,7 @@ namespace ranges {
|
|||
move_constructible<_Ty>
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
copy_constructible<_Ty>
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
&& _Destructible_object<_Ty>;
|
||||
|
||||
template <class _It>
|
||||
|
@ -5720,7 +5720,7 @@ namespace ranges {
|
|||
typename tuple_element_t<_Index, _Tuple>;
|
||||
{ _STD get<_Index>(__t) } -> convertible_to<const tuple_element_t<_Index, _Tuple>&>;
|
||||
};
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
|
||||
template <class _Tuple, size_t _Index>
|
||||
concept _Returnable_element = is_reference_v<_Tuple> || move_constructible<tuple_element_t<_Index, _Tuple>>;
|
||||
|
@ -10480,6 +10480,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // defined(__cpp_lib_ranges)
|
||||
#endif // ^^^ defined(__cpp_lib_ranges) ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _RANGES_
|
||||
|
|
|
@ -35,23 +35,23 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
|
||||
#ifndef _REGEX_MAX_COMPLEXITY_COUNT
|
||||
#define _REGEX_MAX_COMPLEXITY_COUNT 10000000L // set to 0 to disable
|
||||
#endif // _REGEX_MAX_COMPLEXITY_COUNT
|
||||
#endif // !defined(_REGEX_MAX_COMPLEXITY_COUNT)
|
||||
|
||||
#ifndef _REGEX_MAX_STACK_COUNT
|
||||
#ifdef _WIN64
|
||||
#define _REGEX_MAX_STACK_COUNT 600L // set to 0 to disable
|
||||
#else // _WIN64
|
||||
#else // ^^^ defined(_WIN64) / !defined(_WIN64) vvv
|
||||
#define _REGEX_MAX_STACK_COUNT 1000L // set to 0 to disable
|
||||
#endif // _WIN64
|
||||
#endif // _REGEX_MAX_STACK_COUNT
|
||||
#endif // ^^^ !defined(_WIN64) ^^^
|
||||
#endif // !defined(_REGEX_MAX_STACK_COUNT)
|
||||
|
||||
#ifndef _ENHANCED_REGEX_VISUALIZER
|
||||
#ifdef _DEBUG
|
||||
#define _ENHANCED_REGEX_VISUALIZER 1
|
||||
#else // _DEBUG
|
||||
#else // ^^^ defined(_DEBUG) / !defined(_DEBUG) vvv
|
||||
#define _ENHANCED_REGEX_VISUALIZER 0
|
||||
#endif // _DEBUG
|
||||
#endif // _ENHANCED_REGEX_VISUALIZER
|
||||
#endif // ^^^ !defined(_DEBUG) ^^^
|
||||
#endif // !defined(_ENHANCED_REGEX_VISUALIZER)
|
||||
|
||||
_STD_BEGIN
|
||||
|
||||
|
@ -761,7 +761,7 @@ template <class _BidIt>
|
|||
_NODISCARD bool operator>=(const sub_match<_BidIt>& _Left, const sub_match<_BidIt>& _Right) {
|
||||
return !(_Left < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_EXPORT_STD template <class _BidIt>
|
||||
_NODISCARD bool operator==(const sub_match<_BidIt>& _Left, const _Iter_value_t<_BidIt>* _Right) {
|
||||
|
@ -828,7 +828,7 @@ template <class _BidIt>
|
|||
_NODISCARD bool operator>=(const sub_match<_BidIt>& _Left, const _Iter_value_t<_BidIt>* _Right) {
|
||||
return !(_Left < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_EXPORT_STD template <class _BidIt>
|
||||
_NODISCARD bool operator==(const sub_match<_BidIt>& _Left, const _Iter_value_t<_BidIt>& _Right) {
|
||||
|
@ -895,7 +895,7 @@ template <class _BidIt>
|
|||
_NODISCARD bool operator>=(const sub_match<_BidIt>& _Left, const _Iter_value_t<_BidIt>& _Right) {
|
||||
return !(_Left < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_EXPORT_STD template <class _BidIt, class _Traits, class _Alloc>
|
||||
_NODISCARD bool operator==(
|
||||
|
@ -975,7 +975,7 @@ _NODISCARD bool operator>=(
|
|||
const sub_match<_BidIt>& _Left, const basic_string<_Iter_value_t<_BidIt>, _Traits, _Alloc>& _Right) {
|
||||
return !(_Left < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_EXPORT_STD template <class _Elem, class _Traits, class _BidIt>
|
||||
basic_ostream<_Elem, _Traits>& operator<<(basic_ostream<_Elem, _Traits>& _Ostr, const sub_match<_BidIt>& _Match) {
|
||||
|
|
|
@ -65,6 +65,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ _HAS_CXX20 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _SOURCE_LOCATION_
|
||||
|
|
|
@ -598,7 +598,7 @@ public:
|
|||
return {_Mydata, _Mydata, _Mydata + _Mysize};
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return {_Mydata};
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
_NODISCARD constexpr iterator end() const noexcept {
|
||||
|
@ -607,7 +607,7 @@ public:
|
|||
return {_End, _Mydata, _End};
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return {_End};
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
#if _HAS_CXX23 && defined(__cpp_lib_concepts)
|
||||
|
@ -695,6 +695,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ _HAS_CXX20 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _SPAN_
|
||||
|
|
|
@ -401,6 +401,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX23
|
||||
#endif // ^^^ _HAS_CXX23 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _SPANSTREAM_
|
||||
|
|
|
@ -150,7 +150,7 @@ public:
|
|||
_NODISCARD _Mystr str() const&
|
||||
#else
|
||||
_NODISCARD _Mystr str() const
|
||||
#endif // _HAS_CXX20
|
||||
#endif
|
||||
{
|
||||
_Mystr _Result(_Al);
|
||||
const auto _View = _Get_buffer_view();
|
||||
|
@ -620,7 +620,7 @@ public:
|
|||
_NODISCARD _Mystr str() const&
|
||||
#else
|
||||
_NODISCARD _Mystr str() const
|
||||
#endif // _HAS_CXX20
|
||||
#endif
|
||||
{
|
||||
return _Stringbuffer.str();
|
||||
}
|
||||
|
@ -740,7 +740,7 @@ public:
|
|||
_NODISCARD _Mystr str() const&
|
||||
#else
|
||||
_NODISCARD _Mystr str() const
|
||||
#endif // _HAS_CXX20
|
||||
#endif
|
||||
{
|
||||
return _Stringbuffer.str();
|
||||
}
|
||||
|
@ -866,7 +866,7 @@ public:
|
|||
_NODISCARD _Mystr str() const&
|
||||
#else
|
||||
_NODISCARD _Mystr str() const
|
||||
#endif // _HAS_CXX20
|
||||
#endif
|
||||
{
|
||||
return _Stringbuffer.str();
|
||||
}
|
||||
|
|
|
@ -125,9 +125,9 @@ public:
|
|||
decltype(auto) emplace(_Valty&&... _Val) {
|
||||
#if _HAS_CXX17
|
||||
return c.emplace_back(_STD forward<_Valty>(_Val)...);
|
||||
#else // ^^^ C++17 or newer / C++14 vvv
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
c.emplace_back(_STD forward<_Valty>(_Val)...);
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
}
|
||||
|
||||
void pop() noexcept(noexcept(c.pop_back())) /* strengthened */ {
|
||||
|
|
|
@ -392,6 +392,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ _HAS_CXX20 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _STOP_TOKEN_
|
||||
|
|
|
@ -444,7 +444,7 @@ _NODISCARD _Elem* _UIntegral_to_buff(_Elem* _RNext, _UTy _UVal) {
|
|||
|
||||
#ifdef _WIN64
|
||||
auto _UVal_trunc = _UVal;
|
||||
#else // ^^^ _WIN64 / !_WIN64 vvv
|
||||
#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.
|
||||
|
@ -460,7 +460,7 @@ _NODISCARD _Elem* _UIntegral_to_buff(_Elem* _RNext, _UTy _UVal) {
|
|||
}
|
||||
|
||||
auto _UVal_trunc = static_cast<unsigned long>(_UVal);
|
||||
#endif // _WIN64
|
||||
#endif // ^^^ !defined(_WIN64) ^^^
|
||||
|
||||
do {
|
||||
*--_RNext = static_cast<_Elem>('0' + _UVal_trunc % 10);
|
||||
|
|
|
@ -12,6 +12,6 @@
|
|||
_EMIT_STL_WARNING(STL4038, "The contents of <string_view> are available only with C++17 or later.");
|
||||
#else // ^^^ !_HAS_CXX17 / _HAS_CXX17 vvv
|
||||
#include <xstring>
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ _HAS_CXX17 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _STRING_VIEW_
|
||||
|
|
|
@ -380,6 +380,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ _HAS_CXX20 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _SYNCSTREAM_
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <xerrc.h>
|
||||
#ifndef _M_CEE_PURE
|
||||
#include <atomic>
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
|
||||
#if _HAS_CXX20
|
||||
#include <compare>
|
||||
|
@ -410,7 +410,7 @@ _NODISCARD inline bool operator!=(const error_condition& _Left, const error_cond
|
|||
return !(_Left == _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // _STL_OPTIMIZE_SYSTEM_ERROR_OPERATORS
|
||||
#endif // ^^^ !_STL_OPTIMIZE_SYSTEM_ERROR_OPERATORS ^^^
|
||||
|
||||
_NODISCARD inline error_condition error_category::default_error_condition(int _Errval) const noexcept {
|
||||
// make error_condition for error code
|
||||
|
|
|
@ -231,7 +231,7 @@ private:
|
|||
friend strong_ordering operator<=>(thread::id _Left, thread::id _Right) noexcept;
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
friend bool operator<(thread::id _Left, thread::id _Right) noexcept;
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
template <class _Ch, class _Tr>
|
||||
friend basic_ostream<_Ch, _Tr>& operator<<(basic_ostream<_Ch, _Tr>& _Str, thread::id _Id);
|
||||
friend hash<thread::id>;
|
||||
|
@ -277,7 +277,7 @@ _NODISCARD inline bool operator>(thread::id _Left, thread::id _Right) noexcept {
|
|||
_NODISCARD inline bool operator>=(thread::id _Left, thread::id _Right) noexcept {
|
||||
return !(_Left < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_EXPORT_STD template <class _Ch, class _Tr>
|
||||
basic_ostream<_Ch, _Tr>& operator<<(basic_ostream<_Ch, _Tr>& _Str, thread::id _Id) {
|
||||
|
|
|
@ -1044,7 +1044,7 @@ struct _Tuple_cat2<_Ty, index_sequence<_Kx...>, index_sequence<_Ix...>, _Ix_next
|
|||
template <_Tuple_like... _Tuples>
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
template <class... _Tuples>
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
using _Tuple_cat1 = _Tuple_cat2<tuple<_Tuples&&...>, index_sequence<>, index_sequence<>, 0,
|
||||
make_index_sequence<tuple_size_v<_Remove_cvref_t<_Tuples>>>...>;
|
||||
|
||||
|
@ -1057,7 +1057,7 @@ constexpr _Ret _Tuple_cat(index_sequence<_Kx...>, index_sequence<_Ix...>, _Ty _A
|
|||
_EXPORT_STD template <_Tuple_like... _Tuples>
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
_EXPORT_STD template <class... _Tuples>
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
_NODISCARD constexpr typename _Tuple_cat1<_Tuples...>::_Ret tuple_cat(_Tuples&&... _Tpls) { // concatenate tuples
|
||||
using _Cat1 = _Tuple_cat1<_Tuples...>;
|
||||
using _Ret = typename _Cat1::_Ret;
|
||||
|
@ -1071,7 +1071,7 @@ _NODISCARD constexpr typename _Tuple_cat1<_Tuples...>::_Ret tuple_cat(_Tuples&&.
|
|||
template <class _Callable, _Tuple_like _Tuple, size_t... _Indices>
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
template <class _Callable, class _Tuple, size_t... _Indices>
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
constexpr decltype(auto) _Apply_impl(_Callable&& _Obj, _Tuple&& _Tpl, index_sequence<_Indices...>) noexcept(
|
||||
noexcept(_STD invoke(_STD forward<_Callable>(_Obj), _STD get<_Indices>(_STD forward<_Tuple>(_Tpl))...))) {
|
||||
return _STD invoke(_STD forward<_Callable>(_Obj), _STD get<_Indices>(_STD forward<_Tuple>(_Tpl))...);
|
||||
|
@ -1081,7 +1081,7 @@ constexpr decltype(auto) _Apply_impl(_Callable&& _Obj, _Tuple&& _Tpl, index_sequ
|
|||
_EXPORT_STD template <class _Callable, _Tuple_like _Tuple>
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
_EXPORT_STD template <class _Callable, class _Tuple>
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
constexpr decltype(auto) apply(_Callable&& _Obj, _Tuple&& _Tpl) noexcept(
|
||||
noexcept(_Apply_impl(_STD forward<_Callable>(_Obj), _STD forward<_Tuple>(_Tpl),
|
||||
make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>{}))) {
|
||||
|
@ -1093,7 +1093,7 @@ constexpr decltype(auto) apply(_Callable&& _Obj, _Tuple&& _Tpl) noexcept(
|
|||
template <class _Ty, _Tuple_like _Tuple, size_t... _Indices>
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
template <class _Ty, class _Tuple, size_t... _Indices>
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
constexpr _Ty _Make_from_tuple_impl(_Tuple&& _Tpl, index_sequence<_Indices...>) noexcept(
|
||||
is_nothrow_constructible_v<_Ty, decltype(_STD get<_Indices>(_STD forward<_Tuple>(_Tpl)))...>) {
|
||||
// construct _Ty from the elements of _Tpl
|
||||
|
@ -1106,7 +1106,7 @@ constexpr _Ty _Make_from_tuple_impl(_Tuple&& _Tpl, index_sequence<_Indices...>)
|
|||
_EXPORT_STD template <class _Ty, _Tuple_like _Tuple>
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
_EXPORT_STD template <class _Ty, class _Tuple>
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
_NODISCARD constexpr _Ty make_from_tuple(_Tuple&& _Tpl) noexcept(noexcept(_Make_from_tuple_impl<_Ty>(
|
||||
_STD forward<_Tuple>(_Tpl), make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>{}))) /* strengthened */ {
|
||||
// construct _Ty from the elements of _Tpl
|
||||
|
|
|
@ -377,31 +377,29 @@ _INLINE_VAR constexpr bool is_compound_v = !is_fundamental_v<_Ty>;
|
|||
|
||||
#ifdef _M_CEE
|
||||
#define _EMIT_CLRCALL(FUNC, OPT1, OPT2, OPT3) FUNC(__clrcall, OPT1, OPT2, OPT3)
|
||||
#else // ^^^ defined(_M_CEE) / !defined(_M_CEE) vvv
|
||||
#else // ^^^ __clrcall supported / __clrcall not supported vvv
|
||||
#define _EMIT_CLRCALL(FUNC, OPT1, OPT2, OPT3)
|
||||
#endif // ^^^ !defined(_M_CEE) ^^^
|
||||
#endif // ^^^ __clrcall not supported ^^^
|
||||
|
||||
#if defined(_M_IX86) && !defined(_M_CEE)
|
||||
#define _EMIT_FASTCALL(FUNC, OPT1, OPT2, OPT3) FUNC(__fastcall, OPT1, OPT2, OPT3)
|
||||
|
||||
#else // defined(_M_IX86) && !defined(_M_CEE)
|
||||
#else // ^^^ __fastcall supported / __fastcall not supported vvv
|
||||
#define _EMIT_FASTCALL(FUNC, OPT1, OPT2, OPT3)
|
||||
#endif // defined(_M_IX86) && !defined(_M_CEE)
|
||||
#endif // ^^^ __fastcall not supported ^^^
|
||||
|
||||
#ifdef _M_IX86
|
||||
#define _EMIT_STDCALL(FUNC, OPT1, OPT2, OPT3) FUNC(__stdcall, OPT1, OPT2, OPT3)
|
||||
#define _EMIT_THISCALL(FUNC, OPT1, OPT2, OPT3) FUNC(__thiscall, OPT1, OPT2, OPT3)
|
||||
#else // ^^^ defined(_M_IX86) / !defined(_M_IX86) vvv
|
||||
#else // ^^^ __stdcall and __thiscall supported / __stdcall and __thiscall not supported vvv
|
||||
#define _EMIT_STDCALL(FUNC, OPT1, OPT2, OPT3)
|
||||
#define _EMIT_THISCALL(FUNC, OPT1, OPT2, OPT3)
|
||||
#endif // ^^^ !defined(_M_IX86) ^^^
|
||||
#endif // ^^^ __stdcall and __thiscall not supported ^^^
|
||||
|
||||
#if ((defined(_M_IX86) && _M_IX86_FP >= 2) || defined(_M_X64)) && !defined(_M_CEE)
|
||||
#define _EMIT_VECTORCALL(FUNC, OPT1, OPT2, OPT3) FUNC(__vectorcall, OPT1, OPT2, OPT3)
|
||||
|
||||
#else // defined(_M_IX86) && _M_IX86_FP >= 2 etc.
|
||||
#else // ^^^ __vectorcall supported / __vectorcall not supported vvv
|
||||
#define _EMIT_VECTORCALL(FUNC, OPT1, OPT2, OPT3)
|
||||
#endif // defined(_M_IX86) && _M_IX86_FP >= 2 etc.
|
||||
#endif // ^^^ __vectorcall not supported ^^^
|
||||
|
||||
#define _NON_MEMBER_CALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
|
||||
_EMIT_CDECL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
|
||||
|
@ -803,7 +801,7 @@ struct _Is_assignable_no_precondition_check : bool_constant<__is_assignable_no_p
|
|||
#else // ^^^ Use intrinsic / intrinsic not supported vvv
|
||||
template <class _To, class _From>
|
||||
using _Is_assignable_no_precondition_check = is_assignable<_To, _From>;
|
||||
#endif // defined(_IS_ASSIGNABLE_NOCHECK_SUPPORTED) && !defined(__CUDACC__)
|
||||
#endif // ^^^ intrinsic not supported ^^^
|
||||
|
||||
_EXPORT_STD template <class _Ty>
|
||||
struct is_copy_assignable
|
||||
|
@ -830,7 +828,7 @@ using _Is_copy_assignable_no_precondition_check = is_copy_assignable<_Ty>;
|
|||
|
||||
template <class _Ty>
|
||||
_INLINE_VAR constexpr bool _Is_copy_assignable_unchecked_v = is_copy_assignable_v<_Ty>;
|
||||
#endif // defined(_IS_ASSIGNABLE_NOCHECK_SUPPORTED) && !defined(__CUDACC__)
|
||||
#endif // ^^^ intrinsic not supported ^^^
|
||||
|
||||
_EXPORT_STD template <class _Ty>
|
||||
struct is_move_assignable : bool_constant<__is_assignable(add_lvalue_reference_t<_Ty>, _Ty)> {
|
||||
|
@ -854,7 +852,7 @@ using _Is_move_assignable_no_precondition_check = is_move_assignable<_Ty>;
|
|||
|
||||
template <class _Ty>
|
||||
_INLINE_VAR constexpr bool _Is_move_assignable_unchecked_v = is_move_assignable_v<_Ty>;
|
||||
#endif // defined(_IS_ASSIGNABLE_NOCHECK_SUPPORTED) && !defined(__CUDACC__)
|
||||
#endif // ^^^ intrinsic not supported ^^^
|
||||
|
||||
_EXPORT_STD template <class _Ty>
|
||||
struct is_destructible : bool_constant<__is_destructible(_Ty)> {
|
||||
|
@ -1164,7 +1162,7 @@ struct _Aligned<_Len, _Align, double, false> {
|
|||
struct type {
|
||||
alignas(_Align) char _Space[_Len];
|
||||
};
|
||||
#else // ^^^ _ENABLE_EXTENDED_ALIGNED_STORAGE / !_ENABLE_EXTENDED_ALIGNED_STORAGE vvv
|
||||
#else // ^^^ defined(_ENABLE_EXTENDED_ALIGNED_STORAGE) / !defined(_ENABLE_EXTENDED_ALIGNED_STORAGE) vvv
|
||||
#ifndef _DISABLE_EXTENDED_ALIGNED_STORAGE
|
||||
static_assert(_Always_false<_Aligned>,
|
||||
"You've instantiated std::aligned_storage<Len, Align> with an extended alignment (in other "
|
||||
|
@ -1175,9 +1173,9 @@ struct _Aligned<_Len, _Align, double, false> {
|
|||
"To suppress this error, please define either "
|
||||
"(1) _ENABLE_EXTENDED_ALIGNED_STORAGE to confirm that you want a type with an extended alignment, or "
|
||||
"(2) _DISABLE_EXTENDED_ALIGNED_STORAGE to get the old non-conforming behavior.");
|
||||
#endif // !_DISABLE_EXTENDED_ALIGNED_STORAGE
|
||||
#endif // ^^^ !defined(_DISABLE_EXTENDED_ALIGNED_STORAGE) ^^^
|
||||
using type = _Align_type<max_align_t, _Len>;
|
||||
#endif // _ENABLE_EXTENDED_ALIGNED_STORAGE
|
||||
#endif // ^^^ !defined(_ENABLE_EXTENDED_ALIGNED_STORAGE) ^^^
|
||||
};
|
||||
|
||||
template <size_t _Len, size_t _Align>
|
||||
|
@ -1323,10 +1321,10 @@ struct _Const_lvalue_cond_oper<_Ty1, _Ty2, void_t<_Conditional_type<const _Ty1&,
|
|||
|
||||
template <class _Ty1, class _Ty2, class = void>
|
||||
struct _Decayed_cond_oper : _Const_lvalue_cond_oper<_Ty1, _Ty2> {};
|
||||
#else // ^^^ >= C++20 / <= C++17 vvv
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
template <class _Ty1, class _Ty2, class = void>
|
||||
struct _Decayed_cond_oper {};
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
template <class _Ty1, class _Ty2>
|
||||
struct _Decayed_cond_oper<_Ty1, _Ty2, void_t<_Conditional_type<_Ty1, _Ty2>>> {
|
||||
|
@ -2126,7 +2124,7 @@ struct _Is_nothrow_swappable;
|
|||
_EXPORT_STD template <class _Ty, enable_if_t<is_move_constructible_v<_Ty> && is_move_assignable_v<_Ty>, int> = 0>
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
template <class _Ty, int _Enabled = 0>
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
_CONSTEXPR20 void swap(_Ty&, _Ty&) noexcept(is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_assignable_v<_Ty>);
|
||||
|
||||
_EXPORT_STD template <class _Ty, size_t _Size, enable_if_t<_Is_swappable<_Ty>::value, int> = 0>
|
||||
|
|
|
@ -61,7 +61,7 @@ class __non_rtti_object : public bad_typeid { // report a non-RTTI object
|
|||
public:
|
||||
__non_rtti_object(const char* _Message) : bad_typeid(_Message) {}
|
||||
};
|
||||
#endif // !_HAS_EXCEPTIONS
|
||||
#endif // ^^^ !_HAS_EXCEPTIONS ^^^
|
||||
|
||||
[[noreturn]] inline void _Throw_bad_cast() {
|
||||
_THROW(bad_cast{});
|
||||
|
|
|
@ -24,23 +24,22 @@
|
|||
#ifdef _DEBUG
|
||||
#define _DEBUG_AFFIX "d"
|
||||
#define _IDL_DEFAULT 2
|
||||
#else
|
||||
#else // ^^^ defined(_DEBUG) / !defined(_DEBUG) vvv
|
||||
#define _DEBUG_AFFIX ""
|
||||
#define _IDL_DEFAULT 0
|
||||
#endif
|
||||
#endif // ^^^ !defined(_DEBUG) ^^^
|
||||
|
||||
#if defined(_DLL) && !defined(_STATIC_CPPLIB)
|
||||
#define _LIB_STEM "msvcprt"
|
||||
#else
|
||||
#else // ^^^ defined(_DLL) && !defined(_STATIC_CPPLIB) / !defined(_DLL) || defined(_STATIC_CPPLIB) vvv
|
||||
#define _LIB_STEM "libcpmt"
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL != _IDL_DEFAULT
|
||||
#define _IDL_AFFIX _STRINGIZE(_ITERATOR_DEBUG_LEVEL)
|
||||
#endif
|
||||
#endif
|
||||
#endif // _ITERATOR_DEBUG_LEVEL != _IDL_DEFAULT
|
||||
#endif // ^^^ !defined(_DLL) || defined(_STATIC_CPPLIB) ^^^
|
||||
|
||||
#ifdef _IDL_AFFIX
|
||||
#else
|
||||
#ifndef _IDL_AFFIX
|
||||
#define _IDL_AFFIX ""
|
||||
#endif
|
||||
|
||||
|
@ -51,8 +50,8 @@
|
|||
#undef _IDL_DEFAULT
|
||||
#undef _LIB_STEM
|
||||
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
|
||||
#endif // _CRT_NOPRAGMA_LIBS
|
||||
#endif // !defined(_CRT_NOPRAGMA_LIBS)
|
||||
|
||||
#endif // _USE_ANSI_CPP
|
||||
|
|
|
@ -123,7 +123,7 @@ _CONSTEXPR20 void swap(_Ty (&_Left)[_Size], _Ty (&_Right)[_Size]) noexcept(_Is_n
|
|||
_EXPORT_STD template <class _Ty, enable_if_t<is_move_constructible_v<_Ty> && is_move_assignable_v<_Ty>, int> /* = 0 */>
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
template <class _Ty, int _Enabled /* = 0 */>
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
_CONSTEXPR20 void swap(_Ty& _Left, _Ty& _Right) noexcept(
|
||||
is_nothrow_move_constructible_v<_Ty>&& is_nothrow_move_assignable_v<_Ty>) {
|
||||
_Ty _Tmp = _STD move(_Left);
|
||||
|
|
|
@ -1679,7 +1679,7 @@ _NODISCARD constexpr bool operator<=(monostate, monostate) noexcept {
|
|||
_NODISCARD constexpr bool operator>=(monostate, monostate) noexcept {
|
||||
return true;
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_EXPORT_STD template <class... _Types,
|
||||
enable_if_t<conjunction_v<is_move_constructible<_Types>..., is_swappable<_Types>...>, int> = 0>
|
||||
|
@ -1732,6 +1732,6 @@ _STD_END
|
|||
_STL_RESTORE_CLANG_WARNINGS
|
||||
#pragma warning(pop)
|
||||
#pragma pack(pop)
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ _HAS_CXX17 ^^^
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _VARIANT_
|
||||
|
|
|
@ -117,7 +117,7 @@ public:
|
|||
if (_Off > 0) {
|
||||
_STL_VERIFY(_Off <= _Mycont->_Mylast - _Ptr, "cannot seek vector iterator after end");
|
||||
}
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
}
|
||||
|
||||
_CONSTEXPR20 _Vector_const_iterator& operator+=(const difference_type _Off) noexcept {
|
||||
|
@ -188,7 +188,7 @@ public:
|
|||
_NODISCARD bool operator>=(const _Vector_const_iterator& _Right) const noexcept {
|
||||
return !(*this < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_CONSTEXPR20 void _Compat(const _Vector_const_iterator& _Right) const noexcept {
|
||||
// test for compatible iterator pair
|
||||
|
@ -196,7 +196,7 @@ public:
|
|||
(void) _Right;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 0 / _ITERATOR_DEBUG_LEVEL != 0 vvv
|
||||
_STL_VERIFY(this->_Getcont() == _Right._Getcont(), "vector iterators incompatible");
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
}
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL != 0
|
||||
|
@ -594,7 +594,7 @@ private:
|
|||
#define _ASAN_VECTOR_CREATE_GUARD
|
||||
#define _ASAN_VECTOR_EXTEND_GUARD(n)
|
||||
#define _ASAN_VECTOR_RELEASE_GUARD
|
||||
#endif // !_INSERT_VECTOR_ANNOTATION
|
||||
#endif // ^^^ !_INSERT_VECTOR_ANNOTATION ^^^
|
||||
|
||||
using _Scary_val = _Vector_val<conditional_t<_Is_simple_alloc_v<_Alty>, _Simple_types<_Ty>,
|
||||
_Vec_iter_types<_Ty, size_type, difference_type, pointer, const_pointer>>>;
|
||||
|
@ -864,7 +864,7 @@ public:
|
|||
return _Result;
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
(void) _Result;
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
}
|
||||
|
||||
_CONSTEXPR20 void push_back(const _Ty& _Val) { // insert element at end, provide strong guarantee
|
||||
|
@ -2183,7 +2183,7 @@ private:
|
|||
}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL != 2 vvv
|
||||
_CONSTEXPR20 void _Orphan_range(pointer, pointer) const {}
|
||||
#endif // _ITERATOR_DEBUG_LEVEL != 2
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
|
||||
_NODISCARD _CONSTEXPR20 _Alty& _Getal() noexcept {
|
||||
return _Mypair._Get_first();
|
||||
|
@ -2636,7 +2636,7 @@ public:
|
|||
_NODISCARD bool operator>=(const _Vb_const_iterator& _Right) const noexcept {
|
||||
return !(*this < _Right);
|
||||
}
|
||||
#endif // !_HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
_CONSTEXPR20 void _Compat(const _Vb_const_iterator& _Right) const noexcept {
|
||||
// test for compatible iterator pair
|
||||
|
@ -2983,7 +2983,7 @@ public:
|
|||
this->_Mysize = _STD exchange(_Right._Mysize, size_type{0});
|
||||
this->_Swap_proxy_and_iterators(_Right);
|
||||
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -3050,7 +3050,7 @@ public:
|
|||
|
||||
this->_Myvec = _Right._Myvec;
|
||||
this->_Mysize = _Right._Mysize;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 0 ^^^
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ _NODISCARD inline unsigned long _Floor_of_log_2(size_t _Value) noexcept { // ret
|
|||
_Result = 63;
|
||||
#else // ^^^ 64-bit / 32-bit vvv
|
||||
_Result = 31;
|
||||
#endif // 64 vs. 32-bit
|
||||
#endif // ^^^ 32-bit ^^^
|
||||
|
||||
while ((size_t{1} << _Result) > _Value) {
|
||||
--_Result;
|
||||
|
@ -41,7 +41,7 @@ _NODISCARD inline unsigned long _Floor_of_log_2(size_t _Value) noexcept { // ret
|
|||
_BitScanReverse64(&_Result, _Value); // lgtm [cpp/conditionallyuninitializedvariable]
|
||||
#else // ^^^ 64-bit / 32-bit vvv
|
||||
_BitScanReverse(&_Result, _Value); // lgtm [cpp/conditionallyuninitializedvariable]
|
||||
#endif // 64 vs. 32-bit
|
||||
#endif // ^^^ 32-bit ^^^
|
||||
#endif // ^^^ !defined(_M_CEE_PURE) ^^^
|
||||
|
||||
return _Result;
|
||||
|
|
|
@ -1017,7 +1017,7 @@ private:
|
|||
_Mylist& _List;
|
||||
const _Nodeptr _Predecessor;
|
||||
_Nodeptr _Next;
|
||||
#endif
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
};
|
||||
|
||||
_Nodeptr _Unchecked_erase(_Nodeptr _First, const _Nodeptr _Last) noexcept(_Nothrow_hash<_Traits, key_type>) {
|
||||
|
|
|
@ -227,7 +227,7 @@ public:
|
|||
__CLR_OR_THIS_CALL _Locinfo(const char* _Pch = "C")
|
||||
#ifndef _M_CEE_PURE
|
||||
: _Lock(_LOCK_LOCALE)
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
{
|
||||
if (_Pch) {
|
||||
_Locinfo_ctor(this, _Pch);
|
||||
|
@ -240,7 +240,7 @@ public:
|
|||
__CLR_OR_THIS_CALL _Locinfo(int _Cat, const char* _Pch)
|
||||
#ifndef _M_CEE_PURE
|
||||
: _Lock(_LOCK_LOCALE)
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
{
|
||||
if (_Pch) {
|
||||
_Locinfo_ctor(this, _Cat, _Pch);
|
||||
|
|
|
@ -1261,7 +1261,7 @@ public:
|
|||
}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL != 2 vvv
|
||||
_Myproxy = _Right._Myproxy;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL != 2
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -1295,7 +1295,7 @@ public:
|
|||
_Myproxy = nullptr;
|
||||
}
|
||||
}
|
||||
#endif // _ITERATOR_DEBUG_LEVEL != 2
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
|
||||
_CONSTEXPR20 const _Container_base12* _Getcont() const noexcept {
|
||||
return _Myproxy ? _Myproxy->_Mycont : nullptr;
|
||||
|
@ -1420,7 +1420,7 @@ _CONSTEXPR20 void _Container_base12::_Swap_proxy_and_iterators(_Container_base12
|
|||
}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL != 2 vvv
|
||||
_Swap_proxy_and_iterators_unlocked(_Right);
|
||||
#endif // _ITERATOR_DEBUG_LEVEL != 2
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
}
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL == 0
|
||||
|
|
|
@ -195,9 +195,9 @@ namespace pmr {
|
|||
|
||||
#if _HAS_CXX20 && defined(__cpp_lib_byte)
|
||||
_EXPORT_STD template <class _Ty = byte>
|
||||
#else
|
||||
#else // ^^^ _HAS_CXX20 && defined(__cpp_lib_byte) / !_HAS_CXX20 || !defined(__cpp_lib_byte) vvv
|
||||
_EXPORT_STD template <class _Ty>
|
||||
#endif // _HAS_CXX20 && defined(__cpp_lib_byte)
|
||||
#endif // ^^^ !_HAS_CXX20 || !defined(__cpp_lib_byte) ^^^
|
||||
class polymorphic_allocator {
|
||||
public:
|
||||
template <class>
|
||||
|
|
|
@ -918,7 +918,7 @@ private:
|
|||
: _Mydata(_Data), _Mysize(_Size), _Myoff(_Off) {}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
constexpr explicit _String_view_iterator(const pointer _Ptr) noexcept : _Myptr(_Ptr) {}
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
|
||||
public:
|
||||
_NODISCARD constexpr reference operator*() const noexcept {
|
||||
|
@ -928,7 +928,7 @@ public:
|
|||
return _Mydata[_Myoff];
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return *_Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
_NODISCARD constexpr pointer operator->() const noexcept {
|
||||
|
@ -938,7 +938,7 @@ public:
|
|||
return _Mydata + _Myoff;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return _Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
constexpr _String_view_iterator& operator++() noexcept {
|
||||
|
@ -948,7 +948,7 @@ public:
|
|||
++_Myoff;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
++_Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -965,7 +965,7 @@ public:
|
|||
--_Myoff;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
--_Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -991,7 +991,7 @@ public:
|
|||
}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
(void) _Off;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL >= 1
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
constexpr _String_view_iterator& operator+=(const difference_type _Off) noexcept {
|
||||
|
@ -1000,7 +1000,7 @@ public:
|
|||
_Myoff += static_cast<size_t>(_Off);
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
_Myptr += _Off;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
@ -1035,7 +1035,7 @@ public:
|
|||
_Myoff -= static_cast<size_t>(_Off);
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
_Myptr -= _Off;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
@ -1053,7 +1053,7 @@ public:
|
|||
return static_cast<difference_type>(_Myoff - _Right._Myoff);
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return _Myptr - _Right._Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
_NODISCARD constexpr reference operator[](const difference_type _Off) const noexcept {
|
||||
|
@ -1067,7 +1067,7 @@ public:
|
|||
return _Myoff == _Right._Myoff;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return _Myptr == _Right._Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
#if _HAS_CXX20
|
||||
|
@ -1078,7 +1078,7 @@ public:
|
|||
return _Myoff <=> _Right._Myoff;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return _Myptr <=> _Right._Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
_NODISCARD constexpr bool operator!=(const _String_view_iterator& _Right) const noexcept {
|
||||
|
@ -1092,7 +1092,7 @@ public:
|
|||
return _Myoff < _Right._Myoff;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return _Myptr < _Right._Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
_NODISCARD constexpr bool operator>(const _String_view_iterator& _Right) const noexcept {
|
||||
|
@ -1123,7 +1123,7 @@ public:
|
|||
return _Mydata + _Myoff;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return _Myptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
static constexpr bool _Unwrap_when_unverified = _ITERATOR_DEBUG_LEVEL == 0;
|
||||
|
@ -1133,7 +1133,7 @@ public:
|
|||
_Myoff = static_cast<size_t>(_It - _Mydata);
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
_Myptr = _It;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -1143,7 +1143,7 @@ private:
|
|||
size_t _Myoff = 0;
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
pointer _Myptr = nullptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
};
|
||||
|
||||
#if _HAS_CXX20
|
||||
|
@ -1239,7 +1239,7 @@ public:
|
|||
return const_iterator(_Mydata, _Mysize, 0);
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return const_iterator(_Mydata);
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
_NODISCARD constexpr const_iterator end() const noexcept {
|
||||
|
@ -1247,7 +1247,7 @@ public:
|
|||
return const_iterator(_Mydata, _Mysize, _Mysize);
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
return const_iterator(_Mydata + _Mysize);
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
_NODISCARD constexpr const_iterator cbegin() const noexcept {
|
||||
|
@ -1934,7 +1934,7 @@ public:
|
|||
}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
(void) _Off;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL >= 1
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
_CONSTEXPR20 _String_const_iterator& operator+=(const difference_type _Off) noexcept {
|
||||
|
@ -2016,7 +2016,7 @@ public:
|
|||
" point to different string instances)");
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL >= 1 / _ITERATOR_DEBUG_LEVEL == 0 vvv
|
||||
(void) _Right;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL == 0 ^^^
|
||||
}
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL >= 1
|
||||
|
@ -2479,7 +2479,7 @@ private:
|
|||
#define _ASAN_STRING_REMOVE(_Str)
|
||||
#define _ASAN_STRING_CREATE(_Str)
|
||||
#define _ASAN_STRING_MODIFY(_Str, _Old_size, _New_size)
|
||||
#endif // !_INSERT_STRING_ANNOTATION
|
||||
#endif // ^^^ !_INSERT_STRING_ANNOTATION ^^^
|
||||
|
||||
public:
|
||||
_CONSTEXPR20
|
||||
|
@ -2666,7 +2666,7 @@ private:
|
|||
_Traits::copy(_My_data._Bx._Buf, _Arg, _Count + 1);
|
||||
#else // ^^^ _INSERT_STRING_ANNOTATION / !_INSERT_STRING_ANNOTATION vvv
|
||||
_Traits::copy(_My_data._Bx._Buf, _Arg, _BUF_SIZE);
|
||||
#endif // !_INSERT_STRING_ANNOTATION
|
||||
#endif // ^^^ !_INSERT_STRING_ANNOTATION ^^^
|
||||
}
|
||||
|
||||
_Proxy._Release();
|
||||
|
@ -3493,7 +3493,7 @@ public:
|
|||
const bool _Check_overlap = _Count <= _Mypair._Myval2._Myres - _Old_size && !_STD is_constant_evaluated();
|
||||
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
|
||||
const bool _Check_overlap = _Count <= _Mypair._Myval2._Myres - _Old_size;
|
||||
#endif // _HAS_CXX20
|
||||
#endif // ^^^ !_HAS_CXX20 ^^^
|
||||
|
||||
if (_Check_overlap) {
|
||||
_ASAN_STRING_MODIFY(*this, _Old_size, _Old_size + _Count);
|
||||
|
|
|
@ -172,7 +172,7 @@ _INLINE_VAR constexpr bool _Is_any_of_v = // true if and only if _Ty is in _Type
|
|||
(is_same_v<_Ty, _Types> || ...);
|
||||
#else // ^^^ _HAS_CXX17 / !_HAS_CXX17 vvv
|
||||
disjunction_v<is_same<_Ty, _Types>...>;
|
||||
#endif // _HAS_CXX17
|
||||
#endif // ^^^ !_HAS_CXX17 ^^^
|
||||
|
||||
_NODISCARD constexpr bool _Is_constant_evaluated() noexcept { // Internal function for any standard mode
|
||||
return __builtin_is_constant_evaluated();
|
||||
|
|
|
@ -213,7 +213,7 @@ public:
|
|||
_STL_VERIFY(_Ptrsav != this->_Ptr, "cannot decrement begin map/set iterator");
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL != 2 vvv
|
||||
_Mybase::operator--();
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 2
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
@ -726,7 +726,7 @@ public:
|
|||
}
|
||||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 2 / _ITERATOR_DEBUG_LEVEL != 2 vvv
|
||||
(void) _Ptr;
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 2
|
||||
#endif // ^^^ _ITERATOR_DEBUG_LEVEL != 2 ^^^
|
||||
}
|
||||
|
||||
template <class _Alnode>
|
||||
|
|
|
@ -1298,7 +1298,7 @@ using _Guide_key_t =
|
|||
remove_const_t<tuple_element_t<0, typename iterator_traits<_Iter>::value_type>>;
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
remove_const_t<typename iterator_traits<_Iter>::value_type::first_type>;
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
|
||||
template <class _Iter>
|
||||
using _Guide_val_t =
|
||||
|
@ -1306,7 +1306,7 @@ using _Guide_val_t =
|
|||
tuple_element_t<1, typename iterator_traits<_Iter>::value_type>;
|
||||
#else // ^^^ C++23 / C++20 vvv
|
||||
typename iterator_traits<_Iter>::value_type::second_type;
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
|
||||
template <class _Iter>
|
||||
using _Guide_pair_t =
|
||||
|
@ -1316,7 +1316,7 @@ using _Guide_pair_t =
|
|||
#else // ^^^ C++23 / C++20 vvv
|
||||
pair<add_const_t<typename iterator_traits<_Iter>::value_type::first_type>,
|
||||
typename iterator_traits<_Iter>::value_type::second_type>;
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
|
||||
_EXPORT_STD template <class _Ty>
|
||||
struct is_execution_policy : false_type {};
|
||||
|
@ -2710,7 +2710,7 @@ namespace ranges {
|
|||
{
|
||||
return _RANGES begin(static_cast<_CTy&&>(_Val));
|
||||
}
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
};
|
||||
|
||||
inline namespace _Cpos {
|
||||
|
@ -2740,7 +2740,7 @@ namespace ranges {
|
|||
{
|
||||
return _RANGES end(static_cast<_CTy&&>(_Val));
|
||||
}
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
};
|
||||
|
||||
inline namespace _Cpos {
|
||||
|
@ -2907,7 +2907,7 @@ namespace ranges {
|
|||
{
|
||||
return _RANGES rbegin(static_cast<_CTy&&>(_Val));
|
||||
}
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
};
|
||||
|
||||
inline namespace _Cpos {
|
||||
|
@ -2937,7 +2937,7 @@ namespace ranges {
|
|||
{
|
||||
return _RANGES rend(static_cast<_CTy&&>(_Val));
|
||||
}
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
};
|
||||
|
||||
inline namespace _Cpos {
|
||||
|
@ -3162,7 +3162,7 @@ namespace ranges {
|
|||
{
|
||||
return _RANGES data(static_cast<_CTy&&>(_Val));
|
||||
}
|
||||
#endif // C++20
|
||||
#endif // ^^^ C++20 ^^^
|
||||
};
|
||||
|
||||
inline namespace _Cpos {
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#ifdef _ENFORCE_ONLY_CORE_HEADERS
|
||||
_EMIT_STL_ERROR(
|
||||
STL1005, "Tried to include a non-core C++ Standard Library header file with _ENFORCE_ONLY_CORE_HEADERS defined.");
|
||||
#endif // _ENFORCE_ONLY_CORE_HEADERS
|
||||
#endif // defined(_ENFORCE_ONLY_CORE_HEADERS)
|
||||
|
||||
#include <crtdbg.h>
|
||||
#include <crtdefs.h>
|
||||
|
@ -47,15 +47,15 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#else
|
||||
#define _CRT_MSVCP_CURRENT "msvcp_win.dll"
|
||||
#endif
|
||||
#else
|
||||
#else // ^^^ defined(_CRT_WINDOWS) / !defined(_CRT_WINDOWS) vvv
|
||||
// Visual Studio
|
||||
#ifdef _DEBUG
|
||||
#define _CRT_MSVCP_CURRENT "msvcp140d.dll"
|
||||
#else
|
||||
#define _CRT_MSVCP_CURRENT "msvcp140.dll"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif // ^^^ !defined(_CRT_WINDOWS) ^^^
|
||||
#endif // !defined(_CRT_MSVCP_CURRENT)
|
||||
|
||||
#ifdef _ITERATOR_DEBUG_LEVEL // A. _ITERATOR_DEBUG_LEVEL is already defined.
|
||||
|
||||
|
@ -79,7 +79,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#else
|
||||
#define _HAS_ITERATOR_DEBUGGING 0
|
||||
#endif
|
||||
#endif // _HAS_ITERATOR_DEBUGGING
|
||||
#endif // ^^^ !defined(_HAS_ITERATOR_DEBUGGING) ^^^
|
||||
|
||||
// A3. Inspect _SECURE_SCL.
|
||||
#ifdef _SECURE_SCL // A3i. _SECURE_SCL is already defined, validate it.
|
||||
|
@ -111,7 +111,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#else
|
||||
#define _HAS_ITERATOR_DEBUGGING 0
|
||||
#endif
|
||||
#endif // _HAS_ITERATOR_DEBUGGING
|
||||
#endif // ^^^ !defined(_HAS_ITERATOR_DEBUGGING) ^^^
|
||||
|
||||
// B2. Inspect _SECURE_SCL.
|
||||
#ifdef _SECURE_SCL // B2i. _SECURE_SCL is already defined, validate it.
|
||||
|
@ -131,19 +131,19 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#define _ITERATOR_DEBUG_LEVEL 2
|
||||
#elif _SECURE_SCL
|
||||
#define _ITERATOR_DEBUG_LEVEL 1
|
||||
#else
|
||||
#else // ^^^ _SECURE_SCL / !_SECURE_SCL vvv
|
||||
#define _ITERATOR_DEBUG_LEVEL 0
|
||||
#endif
|
||||
#endif // ^^^ !_HAS_ITERATOR_DEBUGGING && !_SECURE_SCL ^^^
|
||||
|
||||
#endif // ^^^ !defined(_ITERATOR_DEBUG_LEVEL) ^^^
|
||||
|
||||
#ifndef _ALLOW_MSC_VER_MISMATCH
|
||||
#pragma detect_mismatch("_MSC_VER", "1900")
|
||||
#endif // _ALLOW_MSC_VER_MISMATCH
|
||||
#endif // !defined(_ALLOW_MSC_VER_MISMATCH)
|
||||
|
||||
#ifndef _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
|
||||
#pragma detect_mismatch("_ITERATOR_DEBUG_LEVEL", _STRINGIZE(_ITERATOR_DEBUG_LEVEL))
|
||||
#endif // _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
|
||||
#endif // !defined(_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH)
|
||||
|
||||
#ifndef _ALLOW_RUNTIME_LIBRARY_MISMATCH
|
||||
#if !defined(_DLL) && !defined(_DEBUG)
|
||||
|
@ -155,7 +155,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#elif defined(_DLL) && defined(_DEBUG)
|
||||
#pragma detect_mismatch("RuntimeLibrary", "MDd_DynamicDebug")
|
||||
#endif // defined(_DLL) etc.
|
||||
#endif // _ALLOW_RUNTIME_LIBRARY_MISMATCH
|
||||
#endif // !defined(_ALLOW_RUNTIME_LIBRARY_MISMATCH)
|
||||
|
||||
#ifndef _CONTAINER_DEBUG_LEVEL
|
||||
#if _ITERATOR_DEBUG_LEVEL == 0
|
||||
|
@ -163,7 +163,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#else // ^^^ _ITERATOR_DEBUG_LEVEL == 0 / _ITERATOR_DEBUG_LEVEL != 0 vvv
|
||||
#define _CONTAINER_DEBUG_LEVEL 1
|
||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||
#endif // _CONTAINER_DEBUG_LEVEL
|
||||
#endif // !defined(_CONTAINER_DEBUG_LEVEL)
|
||||
|
||||
#if _ITERATOR_DEBUG_LEVEL != 0 && _CONTAINER_DEBUG_LEVEL == 0
|
||||
#error _ITERATOR_DEBUG_LEVEL != 0 must imply _CONTAINER_DEBUG_LEVEL == 1.
|
||||
|
@ -177,7 +177,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#else // ^^^ defined(_DEBUG) / !defined(_DEBUG) vvv
|
||||
#define _STL_CRT_SECURE_INVALID_PARAMETER(expr) _CRT_SECURE_INVALID_PARAMETER(expr)
|
||||
#endif // ^^^ !defined(_DEBUG) ^^^
|
||||
#endif // _STL_CRT_SECURE_INVALID_PARAMETER
|
||||
#endif // !defined(_STL_CRT_SECURE_INVALID_PARAMETER)
|
||||
|
||||
#define _STL_REPORT_ERROR(mesg) \
|
||||
do { \
|
||||
|
@ -217,9 +217,9 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
|
||||
#ifdef _ENABLE_STL_INTERNAL_CHECK
|
||||
#define _STL_INTERNAL_CHECK(...) _STL_VERIFY(__VA_ARGS__, "STL internal check: " #__VA_ARGS__)
|
||||
#else // ^^^ _ENABLE_STL_INTERNAL_CHECK / !_ENABLE_STL_INTERNAL_CHECK vvv
|
||||
#else // ^^^ defined(_ENABLE_STL_INTERNAL_CHECK) / !defined(_ENABLE_STL_INTERNAL_CHECK) vvv
|
||||
#define _STL_INTERNAL_CHECK(...) _Analysis_assume_(__VA_ARGS__)
|
||||
#endif // _ENABLE_STL_INTERNAL_CHECK
|
||||
#endif // ^^^ !defined(_ENABLE_STL_INTERNAL_CHECK) ^^^
|
||||
|
||||
#ifndef _ENABLE_ATOMIC_REF_ALIGNMENT_CHECK
|
||||
#ifdef _DEBUG
|
||||
|
@ -227,7 +227,7 @@ _STL_DISABLE_CLANG_WARNINGS
|
|||
#else // ^^^ defined(_DEBUG) / !defined(_DEBUG) vvv
|
||||
#define _ENABLE_ATOMIC_REF_ALIGNMENT_CHECK 0
|
||||
#endif // ^^^ !defined(_DEBUG) ^^^
|
||||
#endif // _ENABLE_ATOMIC_REF_ALIGNMENT_CHECK
|
||||
#endif // !defined(_ENABLE_ATOMIC_REF_ALIGNMENT_CHECK)
|
||||
|
||||
#if _ENABLE_ATOMIC_REF_ALIGNMENT_CHECK
|
||||
#define _ATOMIC_REF_CHECK_ALIGNMENT(cond, mesg) _STL_VERIFY(cond, mesg)
|
||||
|
@ -245,11 +245,11 @@ _EMIT_STL_WARNING(STL4000, "_STATIC_CPPLIB is deprecated and will be REMOVED.");
|
|||
#ifdef _M_CEE_MIXED
|
||||
#error _STATIC_CPPLIB is not supported while building with /clr
|
||||
#endif
|
||||
#endif // !_DISABLE_DEPRECATE_STATIC_CPPLIB
|
||||
#endif // !defined(_DISABLE_DEPRECATE_STATIC_CPPLIB)
|
||||
#ifdef _M_CEE_PURE
|
||||
#error _STATIC_CPPLIB cannot be used with /clr:pure (the resulting assembly would not be pure)
|
||||
#endif
|
||||
#endif // _STATIC_CPPLIB
|
||||
#endif // defined(_STATIC_CPPLIB)
|
||||
|
||||
#if defined(_M_CEE_PURE) && !defined(_SILENCE_CLR_PURE_DEPRECATION_WARNING)
|
||||
_EMIT_STL_WARNING(STL4001, "/clr:pure is deprecated and will be REMOVED.");
|
||||
|
@ -261,7 +261,7 @@ _EMIT_STL_WARNING(STL4001, "/clr:pure is deprecated and will be REMOVED.");
|
|||
#else
|
||||
#define _MRTIMP2_PURE _MRTIMP2
|
||||
#endif
|
||||
#endif // _MRTIMP2_PURE
|
||||
#endif // !defined(_MRTIMP2_PURE)
|
||||
|
||||
#if defined(_DLL) && !defined(_STATIC_CPPLIB) && !defined(_M_CEE_PURE)
|
||||
#define _DLL_CPPLIB
|
||||
|
@ -273,17 +273,17 @@ _EMIT_STL_WARNING(STL4001, "/clr:pure is deprecated and will be REMOVED.");
|
|||
#else
|
||||
#define _CRTIMP2_PURE _CRTIMP2
|
||||
#endif
|
||||
#endif // _CRTIMP2_PURE
|
||||
#endif // !defined(_CRTIMP2_PURE)
|
||||
|
||||
#ifndef _CRTIMP2_IMPORT
|
||||
#if defined(CRTDLL2) && defined(_CRTBLD)
|
||||
#define _CRTIMP2_IMPORT __declspec(dllexport)
|
||||
#elif defined(_DLL) && !defined(_STATIC_CPPLIB)
|
||||
#define _CRTIMP2_IMPORT __declspec(dllimport)
|
||||
#else
|
||||
#else // ^^^ defined(_DLL) && !defined(_STATIC_CPPLIB) / !defined(_DLL) || defined(_STATIC_CPPLIB) vvv
|
||||
#define _CRTIMP2_IMPORT
|
||||
#endif
|
||||
#endif // _CRTIMP2_IMPORT
|
||||
#endif // ^^^ !defined(_DLL) || defined(_STATIC_CPPLIB) ^^^
|
||||
#endif // !defined(_CRTIMP2_IMPORT)
|
||||
|
||||
#ifndef _CRTIMP2_PURE_IMPORT
|
||||
#ifdef _M_CEE_PURE
|
||||
|
@ -291,7 +291,7 @@ _EMIT_STL_WARNING(STL4001, "/clr:pure is deprecated and will be REMOVED.");
|
|||
#else
|
||||
#define _CRTIMP2_PURE_IMPORT _CRTIMP2_IMPORT
|
||||
#endif
|
||||
#endif // _CRTIMP2_PURE_IMPORT
|
||||
#endif // !defined(_CRTIMP2_PURE_IMPORT)
|
||||
|
||||
#ifndef _CRTIMP2_PURE_IMPORT_UNLESS_CODECVT_ID_SATELLITE
|
||||
#ifdef _BUILDING_SATELLITE_CODECVT_IDS
|
||||
|
@ -299,7 +299,7 @@ _EMIT_STL_WARNING(STL4001, "/clr:pure is deprecated and will be REMOVED.");
|
|||
#else
|
||||
#define _CRTIMP2_PURE_IMPORT_UNLESS_CODECVT_ID_SATELLITE _CRTIMP2_PURE_IMPORT
|
||||
#endif
|
||||
#endif // _CRTIMP2_PURE_IMPORT_UNLESS_CODECVT_ID_SATELLITE
|
||||
#endif // !defined(_CRTIMP2_PURE_IMPORT_UNLESS_CODECVT_ID_SATELLITE)
|
||||
|
||||
#ifndef _CRTDATA2_IMPORT
|
||||
#if defined(MRTDLL) && defined(_CRTBLD)
|
||||
|
@ -307,7 +307,7 @@ _EMIT_STL_WARNING(STL4001, "/clr:pure is deprecated and will be REMOVED.");
|
|||
#else
|
||||
#define _CRTDATA2_IMPORT _CRTIMP2_IMPORT
|
||||
#endif
|
||||
#endif // _CRTDATA2_IMPORT
|
||||
#endif // !defined(_CRTDATA2_IMPORT)
|
||||
|
||||
#define _LOCK_LOCALE 0
|
||||
#define _LOCK_MALLOC 1
|
||||
|
@ -321,7 +321,7 @@ _EMIT_STL_WARNING(STL4001, "/clr:pure is deprecated and will be REMOVED.");
|
|||
#else // ^^^ modern 64-bit / less modern or 32-bit vvv
|
||||
#define _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B 0
|
||||
#endif // _STL_WIN32_WINNT >= _STL_WIN32_WINNT_WINBLUE && defined(_WIN64)
|
||||
#endif // _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B
|
||||
#endif // !defined(_STD_ATOMIC_ALWAYS_USE_CMPXCHG16B)
|
||||
|
||||
#if _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B == 0 && defined(_M_ARM64)
|
||||
#error ARM64 requires _STD_ATOMIC_ALWAYS_USE_CMPXCHG16B to be 1.
|
||||
|
@ -378,16 +378,16 @@ class _CRTIMP2_PURE_IMPORT _EmptyLockit { // empty lock class used for bin compa
|
|||
private:
|
||||
int _Locktype;
|
||||
};
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // defined(_M_CEE_PURE)
|
||||
|
||||
#ifdef _M_CEE
|
||||
#ifndef _PREPARE_CONSTRAINED_REGIONS
|
||||
#ifdef _M_CEE_PURE
|
||||
#define _PREPARE_CONSTRAINED_REGIONS 1
|
||||
#else // _M_CEE_PURE
|
||||
#else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv
|
||||
#define _PREPARE_CONSTRAINED_REGIONS 0
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // _PREPARE_CONSTRAINED_REGIONS
|
||||
#endif // ^^^ !defined(_M_CEE_PURE) ^^^
|
||||
#endif // !defined(_PREPARE_CONSTRAINED_REGIONS)
|
||||
|
||||
#if _PREPARE_CONSTRAINED_REGIONS
|
||||
#define _BEGIN_LOCK(_Kind) \
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#else
|
||||
#define _STL_COMPILER_PREPROCESSOR 1
|
||||
#endif
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // !defined(_STL_COMPILER_PREPROCESSOR)
|
||||
|
||||
#if _STL_COMPILER_PREPROCESSOR
|
||||
|
||||
|
@ -520,7 +520,7 @@
|
|||
#else // defined(_MSVC_WARNING_LEVEL) && _MSVC_WARNING_LEVEL >= 4
|
||||
#define _STL_WARNING_LEVEL 3
|
||||
#endif // defined(_MSVC_WARNING_LEVEL) && _MSVC_WARNING_LEVEL >= 4
|
||||
#endif // _STL_WARNING_LEVEL
|
||||
#endif // !defined(_STL_WARNING_LEVEL)
|
||||
|
||||
#if _STL_WARNING_LEVEL < 3
|
||||
#error _STL_WARNING_LEVEL cannot be less than 3.
|
||||
|
@ -572,16 +572,16 @@
|
|||
#elif __has_cpp_attribute(nodiscard) >= 201907L
|
||||
#define _NODISCARD_CTOR _NODISCARD
|
||||
#define _NODISCARD_CTOR_MSG(_Msg) _NODISCARD_MSG(_Msg)
|
||||
#else
|
||||
#else // ^^^ __has_cpp_attribute(nodiscard) >= 201907L / __has_cpp_attribute(nodiscard) < 201907L vvv
|
||||
#define _NODISCARD_CTOR
|
||||
#define _NODISCARD_CTOR_MSG(_Msg)
|
||||
#endif
|
||||
#endif // ^^^ defined(__has_cpp_attribute) && __has_cpp_attribute(nodiscard) < 201907L ^^^
|
||||
|
||||
#if defined(__CUDACC__) && !defined(__clang__) // TRANSITION, VSO-568006
|
||||
#define _NODISCARD_FRIEND friend
|
||||
#else // ^^^ workaround / no workaround vvv
|
||||
#define _NODISCARD_FRIEND _NODISCARD friend
|
||||
#endif // TRANSITION, VSO-568006
|
||||
#endif // ^^^ no workaround ^^^
|
||||
|
||||
#define _NODISCARD_REMOVE_ALG \
|
||||
_NODISCARD_MSG("The 'remove' and 'remove_if' algorithms return the iterator past the last element " \
|
||||
|
@ -771,7 +771,7 @@
|
|||
|
||||
#ifndef _STL_EXTRA_DISABLED_WARNINGS
|
||||
#define _STL_EXTRA_DISABLED_WARNINGS
|
||||
#endif // _STL_EXTRA_DISABLED_WARNINGS
|
||||
#endif // !defined(_STL_EXTRA_DISABLED_WARNINGS)
|
||||
|
||||
// warning C4180: qualifier applied to function type has no meaning; ignored
|
||||
// warning C4412: function signature contains type 'meow'; C++ objects are unsafe to pass between pure code
|
||||
|
@ -812,7 +812,7 @@
|
|||
_STL_DISABLED_WARNING_C5053 \
|
||||
_STL_EXTRA_DISABLED_WARNINGS
|
||||
// clang-format on
|
||||
#endif // _STL_DISABLED_WARNINGS
|
||||
#endif // !defined(_STL_DISABLED_WARNINGS)
|
||||
|
||||
// warning: constexpr if is a C++17 extension [-Wc++17-extensions]
|
||||
// warning: explicit(bool) is a C++20 extension [-Wc++20-extensions]
|
||||
|
@ -836,7 +836,7 @@
|
|||
#else // ^^^ defined(__clang__) / !defined(__clang__) vvv
|
||||
#define _STL_DISABLE_CLANG_WARNINGS
|
||||
#endif // ^^^ !defined(__clang__) ^^^
|
||||
#endif // _STL_DISABLE_CLANG_WARNINGS
|
||||
#endif // !defined(_STL_DISABLE_CLANG_WARNINGS)
|
||||
|
||||
#ifndef _STL_RESTORE_CLANG_WARNINGS
|
||||
#ifdef __clang__
|
||||
|
@ -844,7 +844,7 @@
|
|||
#else // ^^^ defined(__clang__) / !defined(__clang__) vvv
|
||||
#define _STL_RESTORE_CLANG_WARNINGS
|
||||
#endif // ^^^ !defined(__clang__) ^^^
|
||||
#endif // _STL_RESTORE_CLANG_WARNINGS
|
||||
#endif // !defined(_STL_RESTORE_CLANG_WARNINGS)
|
||||
|
||||
// clang-format off
|
||||
#ifndef _STL_DISABLE_DEPRECATED_WARNING
|
||||
|
@ -872,7 +872,7 @@
|
|||
#else // vvv MSVC vvv
|
||||
#define _STL_RESTORE_DEPRECATED_WARNING _Pragma("warning(pop)")
|
||||
#endif // ^^^ MSVC ^^^
|
||||
#endif // _STL_RESTORE_DEPRECATED_WARNING
|
||||
#endif // !defined(_STL_RESTORE_DEPRECATED_WARNING)
|
||||
|
||||
#define _CPPLIB_VER 650
|
||||
#define _MSVC_STL_VERSION 143
|
||||
|
@ -896,7 +896,7 @@ _EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.38 or ne
|
|||
#else // vvv other compilers vvv
|
||||
// not attempting to detect other compilers
|
||||
#endif // ^^^ other compilers ^^^
|
||||
#endif // _ALLOW_COMPILER_AND_STL_VERSION_MISMATCH
|
||||
#endif // !defined(_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH)
|
||||
|
||||
#ifndef _HAS_STATIC_RTTI
|
||||
#define _HAS_STATIC_RTTI 1
|
||||
|
@ -950,12 +950,12 @@ _EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.38 or ne
|
|||
// N4190 Removing auto_ptr, random_shuffle(), And Old <functional> Stuff
|
||||
#ifndef _HAS_AUTO_PTR_ETC
|
||||
#define _HAS_AUTO_PTR_ETC (!_HAS_CXX17)
|
||||
#endif // _HAS_AUTO_PTR_ETC
|
||||
#endif // !defined(_HAS_AUTO_PTR_ETC)
|
||||
|
||||
// P0003R5 Removing Dynamic Exception Specifications
|
||||
#ifndef _HAS_UNEXPECTED
|
||||
#define _HAS_UNEXPECTED (!_HAS_CXX17)
|
||||
#endif // _HAS_UNEXPECTED
|
||||
#endif // !defined(_HAS_UNEXPECTED)
|
||||
|
||||
#if _HAS_UNEXPECTED && _HAS_CXX23
|
||||
_EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpected<E>.");
|
||||
|
@ -964,12 +964,12 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
// P0004R1 Removing Deprecated Iostreams Aliases
|
||||
#ifndef _HAS_OLD_IOSTREAMS_MEMBERS
|
||||
#define _HAS_OLD_IOSTREAMS_MEMBERS (!_HAS_CXX17)
|
||||
#endif // _HAS_OLD_IOSTREAMS_MEMBERS
|
||||
#endif // !defined(_HAS_OLD_IOSTREAMS_MEMBERS)
|
||||
|
||||
// P0298R3 std::byte
|
||||
#ifndef _HAS_STD_BYTE
|
||||
#define _HAS_STD_BYTE _HAS_CXX17 // inspected by GSL, do not remove
|
||||
#endif // _HAS_STD_BYTE
|
||||
#endif // !defined(_HAS_STD_BYTE)
|
||||
|
||||
// P0302R1 Removing Allocator Support In std::function
|
||||
// LWG-2385 function::assign allocator argument doesn't make sense
|
||||
|
@ -977,12 +977,12 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
// LWG-2976 Dangling uses_allocator specialization for packaged_task
|
||||
#ifndef _HAS_FUNCTION_ALLOCATOR_SUPPORT
|
||||
#define _HAS_FUNCTION_ALLOCATOR_SUPPORT (!_HAS_CXX17)
|
||||
#endif // _HAS_FUNCTION_ALLOCATOR_SUPPORT
|
||||
#endif // !defined(_HAS_FUNCTION_ALLOCATOR_SUPPORT)
|
||||
|
||||
// The non-Standard std::tr1 namespace and TR1-only machinery
|
||||
#ifndef _HAS_TR1_NAMESPACE
|
||||
#define _HAS_TR1_NAMESPACE (!_HAS_CXX17)
|
||||
#endif // _HAS_TR1_NAMESPACE
|
||||
#endif // !defined(_HAS_TR1_NAMESPACE)
|
||||
|
||||
// STL4000 is "_STATIC_CPPLIB is deprecated", currently in yvals.h
|
||||
// STL4001 is "/clr:pure is deprecated", currently in yvals.h
|
||||
|
@ -1004,7 +1004,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
// Enforcement of matching allocator value_types
|
||||
#ifndef _ENFORCE_MATCHING_ALLOCATORS
|
||||
#define _ENFORCE_MATCHING_ALLOCATORS _HAS_CXX17
|
||||
#endif // _ENFORCE_MATCHING_ALLOCATORS
|
||||
#endif // !defined(_ENFORCE_MATCHING_ALLOCATORS)
|
||||
|
||||
#define _MISMATCHED_ALLOCATOR_MESSAGE(_CONTAINER, _VALUE_TYPE) \
|
||||
_CONTAINER " requires that Allocator's value_type match " _VALUE_TYPE " (See N4950 [container.alloc.reqmts]/5)" \
|
||||
|
@ -1014,7 +1014,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
// Enforcement of Standard facet specializations
|
||||
#ifndef _ENFORCE_FACET_SPECIALIZATIONS
|
||||
#define _ENFORCE_FACET_SPECIALIZATIONS 0
|
||||
#endif // _ENFORCE_FACET_SPECIALIZATIONS
|
||||
#endif // !defined(_ENFORCE_FACET_SPECIALIZATIONS)
|
||||
|
||||
#define _FACET_SPECIALIZATION_MESSAGE \
|
||||
"Unsupported facet specialization; see N4950 [locale.category]. " \
|
||||
|
@ -1025,7 +1025,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
// depicted in the Standard.
|
||||
#ifndef _STL_OPTIMIZE_SYSTEM_ERROR_OPERATORS
|
||||
#define _STL_OPTIMIZE_SYSTEM_ERROR_OPERATORS 1
|
||||
#endif // _STL_OPTIMIZE_SYSTEM_ERROR_OPERATORS
|
||||
#endif // !defined(_STL_OPTIMIZE_SYSTEM_ERROR_OPERATORS)
|
||||
|
||||
// Controls whether the STL will force /fp:fast to enable vectorization of algorithms defined
|
||||
// in the standard as special cases; such as reduce, transform_reduce, inclusive_scan, exclusive_scan
|
||||
|
@ -1034,8 +1034,8 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
#define _STD_VECTORIZE_WITH_FLOAT_CONTROL 0
|
||||
#else // ^^^ floating-point exceptions enabled / floating-point exceptions disabled (default) vvv
|
||||
#define _STD_VECTORIZE_WITH_FLOAT_CONTROL 1
|
||||
#endif // _M_FP_EXCEPT
|
||||
#endif // _STD_VECTORIZE_WITH_FLOAT_CONTROL
|
||||
#endif // ^^^ floating-point exceptions disabled (default) ^^^
|
||||
#endif // !defined(_STD_VECTORIZE_WITH_FLOAT_CONTROL)
|
||||
|
||||
// P0174R2 Deprecating Vestigial Library Parts
|
||||
// P0521R0 Deprecating shared_ptr::unique()
|
||||
|
@ -1527,47 +1527,47 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
// P0619R4 Removing C++17-Deprecated Features
|
||||
#ifndef _HAS_FEATURES_REMOVED_IN_CXX20
|
||||
#define _HAS_FEATURES_REMOVED_IN_CXX20 (!_HAS_CXX20)
|
||||
#endif // _HAS_FEATURES_REMOVED_IN_CXX20
|
||||
#endif // !defined(_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_ADAPTOR_TYPEDEFS
|
||||
#define _HAS_DEPRECATED_ADAPTOR_TYPEDEFS (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_ADAPTOR_TYPEDEFS
|
||||
#endif // !defined(_HAS_DEPRECATED_ADAPTOR_TYPEDEFS)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_ALLOCATOR_MEMBERS
|
||||
#define _HAS_DEPRECATED_ALLOCATOR_MEMBERS (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_ALLOCATOR_MEMBERS
|
||||
#endif // !defined(_HAS_DEPRECATED_ALLOCATOR_MEMBERS)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_ALLOCATOR_VOID
|
||||
#define _HAS_DEPRECATED_ALLOCATOR_VOID (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_ALLOCATOR_VOID
|
||||
#endif // !defined(_HAS_DEPRECATED_ALLOCATOR_VOID)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_IS_LITERAL_TYPE
|
||||
#define _HAS_DEPRECATED_IS_LITERAL_TYPE (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_IS_LITERAL_TYPE
|
||||
#endif // !defined(_HAS_DEPRECATED_IS_LITERAL_TYPE)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_NEGATORS
|
||||
#define _HAS_DEPRECATED_NEGATORS (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_NEGATORS
|
||||
#endif // !defined(_HAS_DEPRECATED_NEGATORS)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_RAW_STORAGE_ITERATOR
|
||||
#define _HAS_DEPRECATED_RAW_STORAGE_ITERATOR (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_RAW_STORAGE_ITERATOR
|
||||
#endif // !defined(_HAS_DEPRECATED_RAW_STORAGE_ITERATOR)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_RESULT_OF
|
||||
#define _HAS_DEPRECATED_RESULT_OF (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_RESULT_OF
|
||||
#endif // !defined(_HAS_DEPRECATED_RESULT_OF)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_SHARED_PTR_UNIQUE
|
||||
#define _HAS_DEPRECATED_SHARED_PTR_UNIQUE (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_SHARED_PTR_UNIQUE
|
||||
#endif // !defined(_HAS_DEPRECATED_SHARED_PTR_UNIQUE)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_TEMPORARY_BUFFER
|
||||
#define _HAS_DEPRECATED_TEMPORARY_BUFFER (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_TEMPORARY_BUFFER
|
||||
#endif // !defined(_HAS_DEPRECATED_TEMPORARY_BUFFER)
|
||||
|
||||
#ifndef _HAS_DEPRECATED_UNCAUGHT_EXCEPTION
|
||||
#define _HAS_DEPRECATED_UNCAUGHT_EXCEPTION (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_DEPRECATED_UNCAUGHT_EXCEPTION
|
||||
#endif // !defined(_HAS_DEPRECATED_UNCAUGHT_EXCEPTION)
|
||||
|
||||
#if _HAS_DEPRECATED_ADAPTOR_TYPEDEFS
|
||||
#define _ARGUMENT_TYPE_NAME argument_type
|
||||
|
@ -1579,22 +1579,22 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
#define _FIRST_ARGUMENT_TYPE_NAME _Unnameable_first_argument
|
||||
#define _SECOND_ARGUMENT_TYPE_NAME _Unnameable_second_argument
|
||||
#define _RESULT_TYPE_NAME _Unnameable_result
|
||||
#endif // !_HAS_DEPRECATED_ADAPTOR_TYPEDEFS
|
||||
#endif // ^^^ !_HAS_DEPRECATED_ADAPTOR_TYPEDEFS ^^^
|
||||
|
||||
// P1423R3 char8_t Backward Compatibility Remediation
|
||||
// Controls whether we allow the stream insertions this proposal forbids
|
||||
#ifndef _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20
|
||||
#define _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20 (_HAS_FEATURES_REMOVED_IN_CXX20)
|
||||
#endif // _HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20
|
||||
#endif // !defined(_HAS_STREAM_INSERTION_OPERATORS_DELETED_IN_CXX20)
|
||||
|
||||
#ifndef _HAS_FEATURES_REMOVED_IN_CXX23
|
||||
#define _HAS_FEATURES_REMOVED_IN_CXX23 (!_HAS_CXX23)
|
||||
#endif // _HAS_FEATURES_REMOVED_IN_CXX23
|
||||
#endif // !defined(_HAS_FEATURES_REMOVED_IN_CXX23)
|
||||
|
||||
// P2186R2 Removing Garbage Collection Support
|
||||
#ifndef _HAS_GARBAGE_COLLECTION_SUPPORT_DELETED_IN_CXX23
|
||||
#define _HAS_GARBAGE_COLLECTION_SUPPORT_DELETED_IN_CXX23 (_HAS_FEATURES_REMOVED_IN_CXX23)
|
||||
#endif // _HAS_GARBAGE_COLLECTION_SUPPORT_DELETED_IN_CXX23
|
||||
#endif // !defined(_HAS_GARBAGE_COLLECTION_SUPPORT_DELETED_IN_CXX23)
|
||||
|
||||
// C++14
|
||||
#define __cpp_lib_chrono_udls 201304L
|
||||
|
@ -1626,7 +1626,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
#define __cpp_lib_robust_nonmodifying_seq_ops 201304L
|
||||
#ifndef _M_CEE_PURE
|
||||
#define __cpp_lib_shared_timed_mutex 201402L
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
#define __cpp_lib_string_udls 201304L
|
||||
#define __cpp_lib_transformation_trait_aliases 201304L
|
||||
#define __cpp_lib_tuple_element_t 201402L
|
||||
|
@ -1678,7 +1678,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
#define __cpp_lib_not_fn 201603L
|
||||
#ifndef _M_CEE_PURE
|
||||
#define __cpp_lib_parallel_algorithm 201603L
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
#define __cpp_lib_raw_memory_algorithms 201606L
|
||||
#define __cpp_lib_sample 201603L
|
||||
#define __cpp_lib_scoped_lock 201703L
|
||||
|
@ -1692,11 +1692,11 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
|
||||
#ifdef __cpp_char8_t
|
||||
#define __cpp_lib_char8_t 201907L
|
||||
#endif // __cpp_char8_t
|
||||
#endif // defined(__cpp_char8_t)
|
||||
|
||||
#ifdef __cpp_impl_coroutine
|
||||
#define __cpp_lib_coroutine 201902L
|
||||
#endif // __cpp_impl_coroutine
|
||||
#endif // defined(__cpp_impl_coroutine)
|
||||
|
||||
#if _HAS_CXX20
|
||||
#if !defined(__EDG__) || defined(__INTELLISENSE__) // TRANSITION, GH-395
|
||||
|
@ -1757,13 +1757,13 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
|
||||
#ifndef __clang__ // TRANSITION, LLVM-48860
|
||||
#define __cpp_lib_is_layout_compatible 201907L
|
||||
#endif // __clang__
|
||||
#endif // !defined(__clang__)
|
||||
|
||||
#define __cpp_lib_is_nothrow_convertible 201806L
|
||||
|
||||
#ifndef __clang__ // TRANSITION, LLVM-48860
|
||||
#define __cpp_lib_is_pointer_interconvertible 201907L
|
||||
#endif // __clang__
|
||||
#endif // !defined(__clang__)
|
||||
|
||||
#define __cpp_lib_jthread 201911L
|
||||
#define __cpp_lib_latch 201907L
|
||||
|
@ -1889,7 +1889,7 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
#elif _HAS_CXX17
|
||||
#define __cpp_lib_execution 201603L // P0024R2 Parallel Algorithms
|
||||
#endif // language mode
|
||||
#endif // _M_CEE_PURE
|
||||
#endif // !defined(_M_CEE_PURE)
|
||||
|
||||
#if _HAS_CXX23 && defined(__cpp_lib_concepts) // TRANSITION, GH-395
|
||||
#define __cpp_lib_optional 202110L // P0798R8 Monadic Operations For optional
|
||||
|
@ -1932,8 +1932,8 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
|||
#ifndef _ALLOW_RTCc_IN_STL
|
||||
#error /RTCc rejects conformant code, so it is not supported by the C++ Standard Library. Either remove this \
|
||||
compiler option, or define _ALLOW_RTCc_IN_STL to suppress this error.
|
||||
#endif // _ALLOW_RTCc_IN_STL
|
||||
#endif // _RTC_CONVERSION_CHECKS_ENABLED
|
||||
#endif // !defined(_ALLOW_RTCc_IN_STL)
|
||||
#endif // defined(_RTC_CONVERSION_CHECKS_ENABLED)
|
||||
|
||||
#define _STRINGIZEX(x) #x
|
||||
#define _STRINGIZE(x) _STRINGIZEX(x)
|
||||
|
@ -1989,27 +1989,27 @@ compiler option, or define _ALLOW_RTCc_IN_STL to suppress this error.
|
|||
// The earliest Windows supported by this implementation is Windows 7
|
||||
#define _STL_WIN32_WINNT _STL_WIN32_WINNT_WIN7
|
||||
#endif // ^^^ !defined(_M_ARM) && !defined(_M_ARM64) && !defined(_ONECORE) && !defined(_CRT_APP) ^^^
|
||||
#endif // _STL_WIN32_WINNT
|
||||
#endif // !defined(_STL_WIN32_WINNT)
|
||||
|
||||
#ifdef __cpp_noexcept_function_type
|
||||
#define _NOEXCEPT_FNPTR noexcept
|
||||
#else
|
||||
#else // ^^^ defined(__cpp_noexcept_function_type) / !defined(__cpp_noexcept_function_type) vvv
|
||||
#define _NOEXCEPT_FNPTR
|
||||
#endif // __cpp_noexcept_function_type
|
||||
#endif // ^^^ !defined(__cpp_noexcept_function_type) ^^^
|
||||
|
||||
#ifdef __clang__
|
||||
#define _STL_INTRIN_HEADER <intrin.h>
|
||||
#define _STL_UNREACHABLE __builtin_unreachable()
|
||||
#else // ^^^ clang / other vvv
|
||||
#else // ^^^ defined(__clang__) / !defined(__clang__) vvv
|
||||
#define _STL_INTRIN_HEADER <intrin0.h>
|
||||
#define _STL_UNREACHABLE __assume(false)
|
||||
#endif // __clang__
|
||||
#endif // ^^^ !defined(__clang__) ^^^
|
||||
|
||||
#ifdef _ENABLE_STL_INTERNAL_CHECK
|
||||
#define _STL_INTERNAL_STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
|
||||
#else // ^^^ _ENABLE_STL_INTERNAL_CHECK / !_ENABLE_STL_INTERNAL_CHECK vvv
|
||||
#else // ^^^ defined(_ENABLE_STL_INTERNAL_CHECK) / !defined(_ENABLE_STL_INTERNAL_CHECK) vvv
|
||||
#define _STL_INTERNAL_STATIC_ASSERT(...)
|
||||
#endif // _ENABLE_STL_INTERNAL_CHECK
|
||||
#endif // ^^^ !defined(_ENABLE_STL_INTERNAL_CHECK) ^^^
|
||||
|
||||
#endif // _STL_COMPILER_PREPROCESSOR
|
||||
#endif // _YVALS_CORE_H_
|
||||
|
|
|
@ -94,7 +94,7 @@ namespace {
|
|||
#else // ^^^ _STL_WIN32_WINNT >= _STL_WIN32_WINNT_WIN8 / _STL_WIN32_WINNT < _STL_WIN32_WINNT_WIN8 vvv
|
||||
#define _ATOMIC_WAIT_ON_ADDRESS_STATICALLY_AVAILABLE 0
|
||||
#endif // ^^^ _STL_WIN32_WINNT < _STL_WIN32_WINNT_WIN8 ^^^
|
||||
#endif // _ATOMIC_WAIT_ON_ADDRESS_STATICALLY_AVAILABLE
|
||||
#endif // !defined(_ATOMIC_WAIT_ON_ADDRESS_STATICALLY_AVAILABLE)
|
||||
|
||||
#if _ATOMIC_WAIT_ON_ADDRESS_STATICALLY_AVAILABLE
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#ifdef _CRT_APP
|
||||
// free static resource used by causality
|
||||
extern "C" void __cdecl __crtCleanupCausalityStaticFactories();
|
||||
#endif // _CRT_APP
|
||||
#endif // defined(_CRT_APP)
|
||||
|
||||
extern "C" BOOL APIENTRY DllMain(HMODULE /* hModule */, DWORD ul_reason_for_call, [[maybe_unused]] LPVOID lpReserved) {
|
||||
if (ul_reason_for_call == DLL_PROCESS_DETACH) {
|
||||
|
@ -16,7 +16,7 @@ extern "C" BOOL APIENTRY DllMain(HMODULE /* hModule */, DWORD ul_reason_for_call
|
|||
if (lpReserved == nullptr) { // only when the process is not terminating
|
||||
__crtCleanupCausalityStaticFactories();
|
||||
}
|
||||
#endif // _CRT_APP
|
||||
#endif // defined(_CRT_APP)
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#ifndef _VCRT_ALLOW_INTERNALS
|
||||
#define _VCRT_ALLOW_INTERNALS
|
||||
#endif // _VCRT_ALLOW_INTERNALS
|
||||
#endif // !defined(_VCRT_ALLOW_INTERNALS)
|
||||
|
||||
#include <Unknwn.h>
|
||||
#include <cstdlib> // for abort
|
||||
|
@ -171,7 +171,7 @@ namespace {
|
|||
const auto _CopyFunc = reinterpret_cast<void*>(_ThrowImageBase + _PType->copyFunction);
|
||||
#else // ^^^ _EH_RELATIVE_TYPEINFO / !_EH_RELATIVE_TYPEINFO vvv
|
||||
const auto _CopyFunc = _PType->copyFunction;
|
||||
#endif // _EH_RELATIVE_TYPEINFO
|
||||
#endif // ^^^ !_EH_RELATIVE_TYPEINFO ^^^
|
||||
|
||||
const auto _Adjusted = __AdjustPointer(const_cast<void*>(_Src), _PType->thisDisplacement);
|
||||
if (_PType->properties & CT_HasVirtualBase) {
|
||||
|
@ -270,7 +270,7 @@ namespace {
|
|||
static_cast<uintptr_t>(_CatchableTypeArray->arrayOfCatchableTypes[0]) + _ThrowImageBase);
|
||||
#else // ^^^ _EH_RELATIVE_TYPEINFO / !_EH_RELATIVE_TYPEINFO vvv
|
||||
const auto _PType = _PThrow->pCatchableTypeArray->arrayOfCatchableTypes[0];
|
||||
#endif // _EH_RELATIVE_TYPEINFO
|
||||
#endif // ^^^ !_EH_RELATIVE_TYPEINFO ^^^
|
||||
|
||||
if (_PThrow->pmfnUnwind) {
|
||||
// The exception was a user defined type with a nontrivial destructor, call it
|
||||
|
@ -281,7 +281,7 @@ namespace {
|
|||
reinterpret_cast<void*>(_PThrow->pmfnUnwind + _ThrowImageBase));
|
||||
#else // ^^^ _EH_RELATIVE_TYPEINFO && !defined(_M_CEE_PURE) / !_EH_RELATIVE_TYPEINFO && !defined(_M_CEE_PURE) vvv
|
||||
_CallMemberFunction0(_CppEhRecord.params.pExceptionObject, _PThrow->pmfnUnwind);
|
||||
#endif
|
||||
#endif // ^^^ !_EH_RELATIVE_TYPEINFO && !defined(_M_CEE_PURE) ^^^
|
||||
} else if (_PType->properties & CT_IsWinRTHandle) {
|
||||
const auto _PUnknown = *static_cast<IUnknown* const*>(_CppEhRecord.params.pExceptionObject);
|
||||
if (_PUnknown) {
|
||||
|
@ -337,7 +337,7 @@ namespace {
|
|||
static_cast<uintptr_t>(_CatchableTypeArray->arrayOfCatchableTypes[0]) + _ThrowImageBase);
|
||||
#else // ^^^ _EH_RELATIVE_TYPEINFO / !_EH_RELATIVE_TYPEINFO vvv
|
||||
const auto _PType = _PThrow->pCatchableTypeArray->arrayOfCatchableTypes[0];
|
||||
#endif // _EH_RELATIVE_TYPEINFO
|
||||
#endif // ^^^ !_EH_RELATIVE_TYPEINFO ^^^
|
||||
|
||||
const auto _ExceptionObjectSize = static_cast<size_t>(_PType->sizeOrOffset);
|
||||
const auto _AllocSize = sizeof(_ExceptionPtr_normal) + _ExceptionObjectSize;
|
||||
|
@ -386,7 +386,7 @@ namespace {
|
|||
static_cast<uintptr_t>(_InnerCatchableTypeArray->arrayOfCatchableTypes[0]) + _InnerThrowImageBase);
|
||||
#else // ^^^ _EH_RELATIVE_TYPEINFO / !_EH_RELATIVE_TYPEINFO vvv
|
||||
const auto _PInnerType = _PInnerThrow->pCatchableTypeArray->arrayOfCatchableTypes[0];
|
||||
#endif // _EH_RELATIVE_TYPEINFO
|
||||
#endif // ^^^ !_EH_RELATIVE_TYPEINFO ^^^
|
||||
|
||||
const auto _InnerExceptionSize = static_cast<size_t>(_PInnerType->sizeOrOffset);
|
||||
const auto _InnerAllocSize = sizeof(_ExceptionPtr_normal) + _InnerExceptionSize;
|
||||
|
@ -496,9 +496,9 @@ _CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL __ExceptionPtrCurrentException(void*
|
|||
const auto _ThrowImageBase = reinterpret_cast<uintptr_t>(_CppRecord.params.pThrowImageBase);
|
||||
const auto _CatchableTypeArray =
|
||||
reinterpret_cast<const CatchableTypeArray*>(_ThrowImageBase + _PThrow->pCatchableTypeArray);
|
||||
#else
|
||||
#else // ^^^ _EH_RELATIVE_TYPEINFO / !_EH_RELATIVE_TYPEINFO vvv
|
||||
const auto _CatchableTypeArray = _PThrow->pCatchableTypeArray;
|
||||
#endif // _EH_RELATIVE_TYPEINFO
|
||||
#endif // ^^^ !_EH_RELATIVE_TYPEINFO ^^^
|
||||
|
||||
if (_CatchableTypeArray->nCatchableTypes <= 0) {
|
||||
// Ditto corrupted.
|
||||
|
@ -511,7 +511,7 @@ _CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL __ExceptionPtrCurrentException(void*
|
|||
static_cast<uintptr_t>(_CatchableTypeArray->arrayOfCatchableTypes[0]) + _ThrowImageBase);
|
||||
#else // ^^^ _EH_RELATIVE_TYPEINFO / !_EH_RELATIVE_TYPEINFO vvv
|
||||
const auto _PType = _PThrow->pCatchableTypeArray->arrayOfCatchableTypes[0];
|
||||
#endif // _EH_RELATIVE_TYPEINFO
|
||||
#endif // ^^^ !_EH_RELATIVE_TYPEINFO ^^^
|
||||
|
||||
// Alloc memory on stack for exception object. This might cause a stack overflow SEH exception, or another C++
|
||||
// exception when copying the C++ exception object. In that case, we just let that become the thrown exception.
|
||||
|
|
|
@ -204,7 +204,7 @@ namespace Concurrency {
|
|||
}
|
||||
}
|
||||
|
||||
#else
|
||||
#else // ^^^ defined(_CRT_APP) / !defined(_CRT_APP) vvv
|
||||
_CRTIMP2 void __thiscall _TaskEventLogger::_LogScheduleTask(bool) {}
|
||||
|
||||
_CRTIMP2 void __thiscall _TaskEventLogger::_LogTaskCompleted() {}
|
||||
|
@ -216,7 +216,7 @@ namespace Concurrency {
|
|||
_CRTIMP2 void __thiscall _TaskEventLogger::_LogWorkItemStarted() {}
|
||||
|
||||
_CRTIMP2 void __thiscall _TaskEventLogger::_LogWorkItemCompleted() {}
|
||||
#endif
|
||||
#endif // ^^^ !defined(_CRT_APP) ^^^
|
||||
|
||||
#if defined(_CRT_APP) || defined(UNDOCKED_WINDOWS_UCRT)
|
||||
using namespace ABI::Windows::Foundation;
|
||||
|
@ -317,7 +317,8 @@ namespace Concurrency {
|
|||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
#else // ^^^ defined(_CRT_APP) || defined(UNDOCKED_WINDOWS_UCRT)
|
||||
// / !defined(_CRT_APP) && !defined(UNDOCKED_WINDOWS_UCRT) vvv
|
||||
_CRTIMP2 void __thiscall _ContextCallback::_CallInContext(_CallbackFunction _Func, bool) const {
|
||||
_Func();
|
||||
}
|
||||
|
@ -335,16 +336,16 @@ namespace Concurrency {
|
|||
_CRTIMP2 bool __cdecl _Task_impl_base::_IsNonBlockingThread() {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#endif // ^^^ !defined(_CRT_APP) && !defined(UNDOCKED_WINDOWS_UCRT) ^^^
|
||||
} // namespace details
|
||||
|
||||
#ifdef _CRT_APP
|
||||
_CRTIMP2 __thiscall task_continuation_context::task_continuation_context()
|
||||
: _ContextCallback(true), _M_RunInline(false) {}
|
||||
#else
|
||||
#else // ^^^ defined(_CRT_APP) / !defined(_CRT_APP) vvv
|
||||
_CRTIMP2 __thiscall task_continuation_context::task_continuation_context()
|
||||
: _ContextCallback(false), _M_RunInline(false) {}
|
||||
#endif
|
||||
#endif // ^^^ !defined(_CRT_APP) ^^^
|
||||
|
||||
} // namespace Concurrency
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace Concurrency {
|
|||
_STL_host_status _Get_STL_host_status() {
|
||||
#ifdef CRTDLL2
|
||||
return _STL_host_status::_Dll;
|
||||
#else // ^^^ CRTDLL2 / !CRTDLL2 vvv
|
||||
#else // ^^^ defined(CRTDLL2) / !defined(CRTDLL2) vvv
|
||||
HANDLE _HExe = _Call_get_module_handle_ex(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, nullptr);
|
||||
if (_HExe == nullptr) {
|
||||
return _STL_host_status::_Unknown;
|
||||
|
@ -64,7 +64,7 @@ namespace Concurrency {
|
|||
} else {
|
||||
return _STL_host_status::_Dll;
|
||||
}
|
||||
#endif // CRTDLL2
|
||||
#endif // ^^^ !defined(CRTDLL2) ^^^
|
||||
}
|
||||
|
||||
#ifdef CRTDLL2
|
||||
|
@ -73,7 +73,7 @@ namespace Concurrency {
|
|||
// code is sufficient.
|
||||
void _Increment_outstanding() {}
|
||||
void _Decrement_outstanding() {}
|
||||
#else // ^^^ CRTDLL2 / !CRTDLL2 vvv
|
||||
#else // ^^^ defined(CRTDLL2) / !defined(CRTDLL2) vvv
|
||||
size_t _Outstanding_tasks = 0;
|
||||
_STD mutex _Task_cv_mutex;
|
||||
_STD condition_variable _Task_cv;
|
||||
|
@ -114,7 +114,7 @@ namespace Concurrency {
|
|||
}
|
||||
};
|
||||
_Task_scheduler_main_block _Task_scheduler_main_block_instance;
|
||||
#endif // CRTDLL2
|
||||
#endif // ^^^ !defined(CRTDLL2) ^^^
|
||||
|
||||
void CALLBACK _Task_scheduler_callback(PTP_CALLBACK_INSTANCE _Pci, PVOID _Args, PTP_WORK) noexcept {
|
||||
_Increment_outstanding();
|
||||
|
|
|
@ -27,7 +27,7 @@ __PURE_APPDOMAIN_GLOBAL extern wostream* _Ptr_wcout = nullptr;
|
|||
__PURE_APPDOMAIN_GLOBAL extern wostream* _Ptr_wcerr = nullptr;
|
||||
__PURE_APPDOMAIN_GLOBAL extern wostream* _Ptr_wclog = nullptr;
|
||||
_STD_END
|
||||
#else
|
||||
#else // ^^^ defined(_M_CEE_PURE) / !defined(_M_CEE_PURE) vvv
|
||||
_STD_BEGIN
|
||||
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT wistream* _Ptr_wcin = nullptr;
|
||||
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT wostream* _Ptr_wcout = nullptr;
|
||||
|
@ -35,4 +35,4 @@ __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT wostream* _Ptr_wcerr = nullptr;
|
|||
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2_IMPORT wostream* _Ptr_wclog = nullptr;
|
||||
_STD_END
|
||||
#include "wiostrea.cpp"
|
||||
#endif
|
||||
#endif // ^^^ !defined(_M_CEE_PURE) ^^^
|
||||
|
|
|
@ -15,7 +15,7 @@ extern "C" long __isa_enabled;
|
|||
|
||||
#ifndef _DEBUG
|
||||
#pragma optimize("t", on) // Override /Os with /Ot for this TU
|
||||
#endif // !_DEBUG
|
||||
#endif // !defined(_DEBUG)
|
||||
|
||||
namespace {
|
||||
bool _Use_avx2() noexcept {
|
||||
|
|
|
@ -138,7 +138,7 @@ extern "C" int __crt_IsPackagedAppHelper() {
|
|||
extern "C" _CRTIMP2 BOOL __cdecl __crtIsPackagedApp() {
|
||||
#ifdef _CRT_APP
|
||||
return TRUE;
|
||||
#else
|
||||
#else // ^^^ defined(_CRT_APP) / !defined(_CRT_APP) vvv
|
||||
static int isPackaged = -1; // Initialize to undefined state
|
||||
|
||||
// If we've already made this check, just return the prev result
|
||||
|
@ -147,7 +147,7 @@ extern "C" _CRTIMP2 BOOL __cdecl __crtIsPackagedApp() {
|
|||
}
|
||||
|
||||
return (isPackaged > 0) ? TRUE : FALSE;
|
||||
#endif
|
||||
#endif // ^^^ !defined(_CRT_APP) ^^^
|
||||
}
|
||||
|
||||
#endif // !defined(_CRT_WINDOWS) && !defined(UNDOCKED_WINDOWS_UCRT)
|
||||
|
|
|
@ -158,6 +158,6 @@ _MRTIMP2 _Success_(return >= 0) int __cdecl _Mbrtowc(
|
|||
_MRTIMP2 int __cdecl _Mbrtowc(unsigned short* pwc, const char* s, size_t n, mbstate_t* pst, const _Cvtvec* ploc) {
|
||||
return _Mbrtowc(reinterpret_cast<wchar_t*>(pwc), s, n, pst, ploc);
|
||||
}
|
||||
#endif // MRTDLL
|
||||
#endif // defined(MRTDLL)
|
||||
|
||||
_END_EXTERN_C_UNLESS_PURE
|
||||
|
|
|
@ -71,6 +71,6 @@ _CRTIMP2_PURE int __CLRCALL_PURE_OR_CDECL _Wcscoll(const unsigned short* string1
|
|||
return _Wcscoll(reinterpret_cast<const wchar_t*>(string1), reinterpret_cast<const wchar_t*>(end1),
|
||||
reinterpret_cast<const wchar_t*>(string2), reinterpret_cast<const wchar_t*>(end2), ploc);
|
||||
}
|
||||
#endif // MRTDLL
|
||||
#endif // defined(MRTDLL)
|
||||
|
||||
_END_EXTERN_C_UNLESS_PURE
|
||||
|
|
|
@ -104,6 +104,6 @@ _CRTIMP2_PURE size_t __CLRCALL_PURE_OR_CDECL _Wcsxfrm(unsigned short* string1, u
|
|||
return _Wcsxfrm(reinterpret_cast<wchar_t*>(string1), reinterpret_cast<wchar_t*>(end1),
|
||||
reinterpret_cast<const wchar_t*>(string2), reinterpret_cast<const wchar_t*>(end2), ploc);
|
||||
}
|
||||
#endif // MRTDLL
|
||||
#endif // defined(MRTDLL)
|
||||
|
||||
_END_EXTERN_C_UNLESS_PURE
|
||||
|
|
|
@ -89,7 +89,7 @@ _CRTIMP2_PURE _Success_(return != -1) int __CLRCALL_PURE_OR_CDECL
|
|||
_CRTIMP2_PURE int __CLRCALL_PURE_OR_CDECL _Wcrtomb(char* s, unsigned short wchar, mbstate_t* pst, const _Cvtvec* ploc) {
|
||||
return _Wcrtomb(s, static_cast<wchar_t>(wchar), pst, ploc);
|
||||
}
|
||||
#endif // MRTDLL
|
||||
#endif // defined(MRTDLL)
|
||||
|
||||
// TRANSITION, ABI: __Wcrtomb_lk() is preserved for binary compatibility
|
||||
_CRTIMP2_PURE int __CLRCALL_PURE_OR_CDECL __Wcrtomb_lk(char* s, wchar_t wchar, mbstate_t* pst, const _Cvtvec* ploc) {
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
#define NLONG 1 // 7 * NLONG == max hexadecimal digits
|
||||
#elif FBITS == 53
|
||||
#define NLONG 3
|
||||
#else // FBITS
|
||||
#else // ^^^ FBITS == 53 / FBITS != 24 && FBITS != 53 vvv
|
||||
#error Unexpected value for FBITS
|
||||
#endif // FBITS
|
||||
#endif // ^^^ FBITS != 24 && FBITS != 53 ^^^
|
||||
|
||||
// FTYPE _Stodx(const CTYPE *s, CTYPE **endptr, long pten, int *perr)
|
||||
{ // convert string to FTYPE, with checking
|
||||
|
|
|
@ -37,9 +37,9 @@ static const FTYPE tenth[] = {
|
|||
static_cast<FTYPE>(FLIT(2457.0) / FRAC_BITS_2 / FRAC_BITS_2),
|
||||
};
|
||||
|
||||
#else // FBITS
|
||||
#else // ^^^ FBITS == 24 / FBITS != 24 && FBITS != 53 vvv
|
||||
#error Unexpected value for FBITS
|
||||
#endif // FBITS
|
||||
#endif // ^^^ FBITS != 24 && FBITS != 53 ^^^
|
||||
|
||||
FTYPE FNAME(Dtento)(FTYPE* xpx, long n, int* perr) { // compute *px * 10**n
|
||||
FTYPE xpf[ACSIZE];
|
||||
|
|
|
@ -288,9 +288,9 @@ FTYPE* FNAME(Xp_setn)(FTYPE* p, int n, long x) noexcept { // load a long integer
|
|||
FNAME(Xp_setw)(p, n, static_cast<FTYPE>(x / 10000));
|
||||
FNAME(Xp_mulh)(p, n, static_cast<FTYPE>(10000));
|
||||
FNAME(Xp_addh)(p, n, static_cast<FTYPE>(x % 10000));
|
||||
#else // FBITS
|
||||
#else // ^^^ FBITS == 24 / FBITS != 24 && FBITS != 53 vvv
|
||||
#error Unexpected value for FBITS
|
||||
#endif // FBITS
|
||||
#endif // ^^^ FBITS != 24 && FBITS != 53 ^^^
|
||||
|
||||
return p;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче