Update preprocessor `#else` and `#endif` comment (#3950)

Co-authored-by: Stephan T. Lavavej <stl@nuwen.net>
This commit is contained in:
Alex Guteniev 2023-09-21 22:42:29 +03:00 коммит произвёл GitHub
Родитель 4f97dbb4d6
Коммит 939513b9aa
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
78 изменённых файлов: 341 добавлений и 343 удалений

Просмотреть файл

@ -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;
}