#pragma once
#ifndef _XTR1COMMON_
#define _XTR1COMMON_
#ifndef RC_INVOKED
#include <yvals_core.h>
#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
,
>
struct
{
static
constexpr
=
;
using
=
;
using
=
;
constexpr
()
const
noexcept
{
return
(
);
}
_NODISCARD constexpr value_type operator()() const noexcept
constexpr
()
const
noexcept
{
return
(
);
}
};
template
<
bool
>
using
=
<
bool
,
>;
using
=
<
true
>;
using
=
<
false
>;
template
<
bool
,
class
=
void
>
struct
{
};
template
<
class
>
struct
<
true
,
>
{
using
=
;
};
template
<
bool
,
class
=
void
>
using
=
typename
<
,
>::
;
template
<
bool
,
class
,
class
>
struct
{
using
=
;
};
template
<
class
,
class
>
struct
<
true
,
,
>
{
using
=
;
};
template
<
bool
,
class
,
class
>
using
=
typename
<
,
,
>::
;
template
<
class
,
class
>
struct
:
{
};
template
<
class
>
struct
<
,
>
:
{
};
template
<
class
,
class
>
_INLINE_VAR constexpr bool is_same_v = is_same<_Ty, _Uty>::value;
template
<
class
>
struct
{
using
=
;
};
template
<
class
>
struct
<
const
>
{
using
=
;
};
template
<
class
>
using
=
typename
<
>::
;
template
<
class
>
struct
{
using
=
;
};
template
<
class
>
struct
<
volatile
>
{
using
=
;
};
template
<
class
>
using
=
typename
<
>::
;
template
<
class
>
struct
{
using
=
;
};
template
<
class
>
struct
<
const
>
{
using
=
;
};
template
<
class
>
struct
<
volatile
>
{
using
=
;
};
template
<
class
>
struct
<
const
volatile
>
{
using
=
;
};
template
<
class
>
using
=
typename
<
>::
;
template
<
class
>
struct
:
{
};
template
<>
struct
<
bool
>
:
{
};
template
<>
struct
<
char
>
:
{
};
template
<>
struct
<
unsigned
char
>
:
{
};
template
<>
struct
<
signed
char
>
:
{
};
#ifdef _NATIVE_WCHAR_T_DEFINED
template
<>
struct
<
wchar_t
>
:
{
};
#endif /* _NATIVE_WCHAR_T_DEFINED */
template
<>
struct
<
char16_t
>
:
{
};
template
<>
struct
<
char32_t
>
:
{
};
template
<>
struct
<
unsigned
short
>
:
{
};
template
<>
struct
<
short
>
:
{
};
template
<>
struct
<
unsigned
int
>
:
{
};
template
<>
struct
<
int
>
:
{
};
template
<>
struct
<
unsigned
long
>
:
{
};
template
<>
struct
<
long
>
:
{
};
template
<>
struct
<
unsigned
long
long
>
:
{
};
template
<>
struct
<
long
long
>
:
{
};
template
<
class
>
struct
:
<
<
>>::
{
};
template
<
class
>
_INLINE_VAR constexpr bool is_integral_v = is_integral<_Ty>::value;
template
<
class
>
struct
:
{
};
template
<>
struct
<
float
>
:
{
};
template
<>
struct
<
double
>
:
{
};
template
<>
struct
<
long
double
>
:
{
};
template
<
class
>
struct
:
<
<
>>::
{
};
template
<
class
>
_INLINE_VAR constexpr bool is_floating_point_v = is_floating_point<_Ty>::value;
template
<
class
>
struct
:
<
<
>
||
<
>>
{
};
template
<
class
>
_INLINE_VAR constexpr bool is_arithmetic_v = is_arithmetic<_Ty>::value;
template
<
class
>
struct
{
using
=
;
};
template
<
class
>
struct
<
&>
{
using
=
;
};
template
<
class
>
struct
<
&&>
{
using
=
;
};
template
<
class
>
using
=
typename
<
>::
;
#pragma pop_macro("new")
_STL_RESTORE_CLANG_WARNINGS
#pragma warning(pop)
#pragma warning(pop)
#pragma pack(pop)
#endif /* RC_INVOKED */
#endif /* _XTR1COMMON_ */
#pragma pack(pop)