#pragma once
#ifndef _XSTDDEF_
#define _XSTDDEF_
#ifndef RC_INVOKED
#include <cstddef>
#include <cstdlib>
#include <initializer_list>
#include <xtr1common>
#pragma pack(push,_CRT_PACKING)
#pragma warning(push,_STL_WARNING_LEVEL)
#pragma warning(disable: _STL_DISABLED_WARNINGS)
#pragma warning(disable:
4455
4494
4619
4643
4702
4984
4988
)
_STL_DISABLE_CLANG_WARNINGS
#pragma push_macro("new")
#undef new
template
<
class
>
_INLINE_VAR constexpr bool _Always_false = false;
#if _HAS_AUTO_PTR_ETC
template
<
class
,
class
>
struct
{
typedef
;
typedef
;
};
template
<
class
,
class
,
class
>
struct
{
typedef
;
typedef
;
typedef
;
};
#endif /* _HAS_AUTO_PTR_ETC */
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type;
constexpr
(
const
&
,
const
&
)
const
{
return
(
+
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type;
constexpr
(
const
&
,
const
&
)
const
{
return
(
-
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty result_type;
constexpr
(
const
&
,
const
&
)
const
{
return
(
*
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;
constexpr
bool
(
const
&
,
const
&
)
const
{
return
(
==
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;
constexpr
bool
(
const
&
,
const
&
)
const
{
return
(
!=
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;
constexpr
bool
(
const
&
,
const
&
)
const
{
return
(
>
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;
constexpr
bool
(
const
&
,
const
&
)
const
{
return
(
<
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;
constexpr
bool
(
const
&
,
const
&
)
const
{
return
(
>=
);
}
};
template
<
class
=
void
>
struct
{
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;
constexpr
bool
(
const
&
,
const
&
)
const
{
return
(
<=
);
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
+
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
+
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
-
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
-
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
*
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
*
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
==
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
==
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
!=
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
!=
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
>
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
>
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
<
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
<
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
>=
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
>=
static_cast
<
&&>(
));
}
};
template
<>
struct
<
void
>
{
typedef
int
;
template
<
class
,
class
>
constexpr
auto
(
&&
,
&&
)
const
->
decltype
(
static_cast
<
&&>(
)
<=
static_cast
<
&&>(
))
{
return
(
static_cast
<
&&>(
)
<=
static_cast
<
&&>(
));
}
};
template
<
class
>
_NODISCARD constexpr _Ty * addressof(_Ty& _Val) noexcept
constexpr
*
(
&
)
noexcept
{
return
(__builtin_addressof(
));
}
template
<
class
>
const
*
(
const
&&) =
delete
;
template
<
class
>
inline
auto
(
)
{
return (_STD addressof(*_Ptr));
}
template
<
class
>
inline
*
(
*
)
{
return
(
);
}
#define _EMIT_CDECL(FUNC, OPT1, OPT2, OPT3) \
FUNC(__cdecl, OPT1, OPT2, OPT3)
#ifdef _M_CEE
#define _EMIT_CLRCALL(FUNC, OPT1, OPT2, OPT3) \
FUNC(__clrcall, OPT1, OPT2, OPT3)
#else /* _M_CEE */
#define _EMIT_CLRCALL(FUNC, OPT1, OPT2, OPT3)
#endif /* _M_CEE */
#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) */
#define _EMIT_FASTCALL(FUNC, OPT1, OPT2, OPT3)
#endif /* defined(_M_IX86) && !defined(_M_CEE) */
#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 /* _M_IX86 */
#define _EMIT_STDCALL(FUNC, OPT1, OPT2, OPT3)
#define _EMIT_THISCALL(FUNC, OPT1, OPT2, OPT3)
#endif /* _M_IX86 */
#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. */
#define _EMIT_VECTORCALL(FUNC, OPT1, OPT2, OPT3)
#endif /* defined(_M_IX86) && _M_IX86_FP >= 2 etc. */
#define _NON_MEMBER_CALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_CDECL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_CLRCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_FASTCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_STDCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_VECTORCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT)
#define _NON_MEMBER_CALL_CV(FUNC, REF_OPT, NOEXCEPT_OPT) \
_NON_MEMBER_CALL(FUNC, , REF_OPT, NOEXCEPT_OPT) \
_NON_MEMBER_CALL(FUNC, const, REF_OPT, NOEXCEPT_OPT) \
_NON_MEMBER_CALL(FUNC, volatile, REF_OPT, NOEXCEPT_OPT) \
_NON_MEMBER_CALL(FUNC, const volatile, REF_OPT, NOEXCEPT_OPT)
#define _NON_MEMBER_CALL_CV_REF(FUNC, NOEXCEPT_OPT) \
_NON_MEMBER_CALL_CV(FUNC, , NOEXCEPT_OPT) \
_NON_MEMBER_CALL_CV(FUNC, &, NOEXCEPT_OPT) \
_NON_MEMBER_CALL_CV(FUNC, &&, NOEXCEPT_OPT)
#if _HAS_NOEXCEPT_FUNCTION_TYPES
#define _NON_MEMBER_CALL_CV_REF_NOEXCEPT(FUNC) \
_NON_MEMBER_CALL_CV_REF(FUNC, ) \
_NON_MEMBER_CALL_CV_REF(FUNC, noexcept)
#else /* _HAS_NOEXCEPT_FUNCTION_TYPES */
#define _NON_MEMBER_CALL_CV_REF_NOEXCEPT(FUNC) \
_NON_MEMBER_CALL_CV_REF(FUNC, )
#endif /* _HAS_NOEXCEPT_FUNCTION_TYPES */
#define _MEMBER_CALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_CDECL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_CLRCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_FASTCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_STDCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_THISCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT) \
_EMIT_VECTORCALL(FUNC, CV_OPT, REF_OPT, NOEXCEPT_OPT)
#define _MEMBER_CALL_CV(FUNC, REF_OPT, NOEXCEPT_OPT) \
_MEMBER_CALL(FUNC, , REF_OPT, NOEXCEPT_OPT) \
_MEMBER_CALL(FUNC, const, REF_OPT, NOEXCEPT_OPT) \
_MEMBER_CALL(FUNC, volatile, REF_OPT, NOEXCEPT_OPT) \
_MEMBER_CALL(FUNC, const volatile, REF_OPT, NOEXCEPT_OPT)
#define _MEMBER_CALL_CV_REF(FUNC, NOEXCEPT_OPT) \
_MEMBER_CALL_CV(FUNC, , NOEXCEPT_OPT) \
_MEMBER_CALL_CV(FUNC, &, NOEXCEPT_OPT) \
_MEMBER_CALL_CV(FUNC, &&, NOEXCEPT_OPT)
#if _HAS_NOEXCEPT_FUNCTION_TYPES
#define _MEMBER_CALL_CV_REF_NOEXCEPT(FUNC) \
_MEMBER_CALL_CV_REF(FUNC, ) \
_MEMBER_CALL_CV_REF(FUNC, noexcept)
#else /* _HAS_NOEXCEPT_FUNCTION_TYPES */
#define _MEMBER_CALL_CV_REF_NOEXCEPT(FUNC) \
_MEMBER_CALL_CV_REF(FUNC, )
#endif /* _HAS_NOEXCEPT_FUNCTION_TYPES */
#define _CLASS_DEFINE_CONST(CLASS) \
CLASS(_EMPTY_ARGUMENT) \
CLASS(const)
#define _CLASS_DEFINE_CV(CLASS) \
CLASS(_EMPTY_ARGUMENT) \
CLASS(const) \
CLASS(volatile) \
CLASS(const volatile)
#if _HAS_NOEXCEPT_FUNCTION_TYPES
#define _CLASS_DEFINE_CV_REF_NOEXCEPT(CLASS) \
CLASS(_EMPTY_ARGUMENT) \
CLASS(const) \
CLASS(volatile) \
CLASS(const volatile) \
CLASS(&) \
CLASS(const &) \
CLASS(volatile &) \
CLASS(const volatile &) \
CLASS(&&) \
CLASS(const &&) \
CLASS(volatile &&) \
CLASS(const volatile &&) \
CLASS(noexcept) \
CLASS(const noexcept) \
CLASS(volatile noexcept) \
CLASS(const volatile noexcept) \
CLASS(& noexcept) \
CLASS(const & noexcept) \
CLASS(volatile & noexcept) \
CLASS(const volatile & noexcept) \
CLASS(&& noexcept) \
CLASS(const && noexcept) \
CLASS(volatile && noexcept) \
CLASS(const volatile && noexcept)
#else /* _HAS_NOEXCEPT_FUNCTION_TYPES */
#define _CLASS_DEFINE_CV_REF_NOEXCEPT(CLASS) \
CLASS(_EMPTY_ARGUMENT) \
CLASS(const) \
CLASS(volatile) \
CLASS(const volatile) \
CLASS(&) \
CLASS(const &) \
CLASS(volatile &) \
CLASS(const volatile &) \
CLASS(&&) \
CLASS(const &&) \
CLASS(volatile &&) \
CLASS(const volatile &&)
#endif /* _HAS_NOEXCEPT_FUNCTION_TYPES */
#pragma pop_macro("new")
_STL_RESTORE_CLANG_WARNINGS
#pragma warning(pop)
#pragma warning(pop)
#pragma pack(pop)
#endif /* RC_INVOKED */
#endif /* _XSTDDEF_ */
#pragma pack(pop)