#pragma once
#ifndef _LIMITS_
#define _LIMITS_
#ifndef RC_INVOKED
#include <ymath.h>
#include <cfloat>
#include <climits>
#include <cmath>
#include <cwchar>
#include <xstddef>
#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
enum
{
= -
1
,
=
0
,
=
1
};
enum
{
= -
1
,
=
0
,
=
1
,
=
2
,
round_toward_neg_infinity
=
3
};
struct
{
static
constexpr
=
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
bool
=
false
;
static
constexpr
=
;
static
constexpr
int
=
0
;
static
constexpr
int
=
0
;
static
constexpr
int
=
0
;
static
constexpr
int
=
0
;
static
constexpr
int
=
0
;
static
constexpr
int
=
0
;
static
constexpr
int
=
0
;
static
constexpr
int
=
0
;
};
template
<
class
>
class
:
public
{
public
:
_NODISCARD static constexpr _Ty (min)() noexcept
static
constexpr
(
)()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty (max)() noexcept
static
constexpr
(
)()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty lowest() noexcept
static
constexpr
()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty epsilon() noexcept
static
constexpr
()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty round_error() noexcept
static
constexpr
()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty denorm_min() noexcept
static
constexpr
()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty infinity() noexcept
static
constexpr
()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty quiet_NaN() noexcept
static
constexpr
()
noexcept
{
return
(
());
}
_NODISCARD static constexpr _Ty signaling_NaN() noexcept
static
constexpr
()
noexcept
{
return
(
());
}
};
template
<
class
>
class
<
const
>
:
public
<
>
{
};
template
<
class
>
class
<
volatile
>
:
public
<
>
{
};
template
<
class
>
class
<
const
volatile
>
:
public
<
>
{
};
struct
:
{
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
int
=
2
;
};
struct
:
{
static
constexpr
=
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
bool
=
true
;
static
constexpr
=
;
static constexpr int radix = FLT_RADIX;
static
constexpr
int
=
2
;
};
template
<>
class
<
char
>
:
public
{
public
:
_NODISCARD static constexpr char (min)() noexcept
static
constexpr
char
(
)()
noexcept
{
}
_NODISCARD static constexpr char (max)() noexcept
static
constexpr
char
(
)()
noexcept
{
}
_NODISCARD static constexpr char lowest() noexcept
static
constexpr
char
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr char epsilon() noexcept
static
constexpr
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char round_error() noexcept
static
constexpr
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char denorm_min() noexcept
static
constexpr
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char infinity() noexcept
static
constexpr
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char quiet_NaN() noexcept
static
constexpr
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char signaling_NaN() noexcept
static
constexpr
char
()
noexcept
{
return
(
0
);
}
static constexpr bool is_signed = CHAR_MIN != 0;
static
constexpr
bool
= (-
128
)
0
;
static constexpr bool is_modulo = CHAR_MIN == 0;
static
constexpr
bool
= (-
128
)
0
;
static constexpr int digits = 8 - (CHAR_MIN != 0);
static
constexpr
int
=
8
- ((-
128
)
0
);
static
constexpr
int
=
2
;
};
template
<>
class
<
wchar_t
>
:
public
{
public
:
_NODISCARD static constexpr wchar_t (min)() noexcept
static
constexpr
wchar_t
(
)()
noexcept
{
}
_NODISCARD static constexpr wchar_t (max)() noexcept
static
constexpr
wchar_t
(
)()
noexcept
{
}
_NODISCARD static constexpr wchar_t lowest() noexcept
static
constexpr
wchar_t
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr wchar_t epsilon() noexcept
static
constexpr
wchar_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr wchar_t round_error() noexcept
static
constexpr
wchar_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr wchar_t denorm_min() noexcept
static
constexpr
wchar_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr wchar_t infinity() noexcept
static
constexpr
wchar_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr wchar_t quiet_NaN() noexcept
static
constexpr
wchar_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr wchar_t signaling_NaN() noexcept
static
constexpr
wchar_t
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
16
;
static
constexpr
int
=
4
;
};
template
<>
class
<
bool
>
:
public
{
public
:
_NODISCARD static constexpr bool (min)() noexcept
static
constexpr
bool
(
)()
noexcept
{
return
(
false
);
}
_NODISCARD static constexpr bool (max)() noexcept
static
constexpr
bool
(
)()
noexcept
{
return
(
true
);
}
_NODISCARD static constexpr bool lowest() noexcept
static
constexpr
bool
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr bool epsilon() noexcept
static
constexpr
bool
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr bool round_error() noexcept
static
constexpr
bool
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr bool denorm_min() noexcept
static
constexpr
bool
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr bool infinity() noexcept
static
constexpr
bool
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr bool quiet_NaN() noexcept
static
constexpr
bool
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr bool signaling_NaN() noexcept
static
constexpr
bool
()
noexcept
{
return
(
0
);
}
static
constexpr
int
=
1
;
};
template
<>
class
<
signed
char
>
:
public
{
public
:
_NODISCARD static constexpr signed char (min)() noexcept
static
constexpr
signed
char
(
)()
noexcept
{
}
_NODISCARD static constexpr signed char (max)() noexcept
static
constexpr
signed
char
(
)()
noexcept
{
}
_NODISCARD static constexpr signed char lowest() noexcept
static
constexpr
signed
char
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr signed char epsilon() noexcept
static
constexpr
signed
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr signed char round_error() noexcept
static
constexpr
signed
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr signed char denorm_min() noexcept
static
constexpr
signed
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr signed char infinity() noexcept
static
constexpr
signed
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr signed char quiet_NaN() noexcept
static
constexpr
signed
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr signed char signaling_NaN() noexcept
static
constexpr
signed
char
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
7
;
static
constexpr
int
=
2
;
};
template
<>
class
<
unsigned
char
>
:
public
{
public
:
_NODISCARD static constexpr unsigned char (min)() noexcept
static
constexpr
unsigned
char
(
)()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned char (max)() noexcept
static
constexpr
unsigned
char
(
)()
noexcept
{
}
_NODISCARD static constexpr unsigned char lowest() noexcept
static
constexpr
unsigned
char
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr unsigned char epsilon() noexcept
static
constexpr
unsigned
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned char round_error() noexcept
static
constexpr
unsigned
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned char denorm_min() noexcept
static
constexpr
unsigned
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned char infinity() noexcept
static
constexpr
unsigned
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned char quiet_NaN() noexcept
static
constexpr
unsigned
char
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned char signaling_NaN() noexcept
static
constexpr
unsigned
char
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
8
;
static
constexpr
int
=
2
;
};
template
<>
class
<
short
>
:
public
{
public
:
_NODISCARD static constexpr short (min)() noexcept
static
constexpr
short
(
)()
noexcept
{
}
_NODISCARD static constexpr short (max)() noexcept
static
constexpr
short
(
)()
noexcept
{
}
_NODISCARD static constexpr short lowest() noexcept
static
constexpr
short
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr short epsilon() noexcept
static
constexpr
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr short round_error() noexcept
static
constexpr
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr short denorm_min() noexcept
static
constexpr
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr short infinity() noexcept
static
constexpr
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr short quiet_NaN() noexcept
static
constexpr
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr short signaling_NaN() noexcept
static
constexpr
short
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
15
;
static
constexpr
int
=
4
;
};
#ifdef _NATIVE_WCHAR_T_DEFINED
template
<>
class
<
unsigned
short
>
:
public
{
public
:
_NODISCARD static constexpr unsigned short (min)() noexcept
static
constexpr
unsigned
short
(
)()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned short (max)() noexcept
static
constexpr
unsigned
short
(
)()
noexcept
{
}
_NODISCARD static constexpr unsigned short lowest() noexcept
static
constexpr
unsigned
short
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr unsigned short epsilon() noexcept
static
constexpr
unsigned
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned short round_error() noexcept
static
constexpr
unsigned
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned short denorm_min() noexcept
static
constexpr
unsigned
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned short infinity() noexcept
static
constexpr
unsigned
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned short quiet_NaN() noexcept
static
constexpr
unsigned
short
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned short signaling_NaN() noexcept
static
constexpr
unsigned
short
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
16
;
static
constexpr
int
=
4
;
};
#endif /* _NATIVE_WCHAR_T_DEFINED */
template
<>
class
<
char16_t
>
:
public
{
public
:
_NODISCARD static constexpr char16_t (min)() noexcept
static
constexpr
char16_t
(
)()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char16_t (max)() noexcept
static
constexpr
char16_t
(
)()
noexcept
{
}
_NODISCARD static constexpr char16_t lowest() noexcept
static
constexpr
char16_t
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr char16_t epsilon() noexcept
static
constexpr
char16_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char16_t round_error() noexcept
static
constexpr
char16_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char16_t denorm_min() noexcept
static
constexpr
char16_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char16_t infinity() noexcept
static
constexpr
char16_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char16_t quiet_NaN() noexcept
static
constexpr
char16_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char16_t signaling_NaN() noexcept
static
constexpr
char16_t
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
16
;
static
constexpr
int
=
4
;
};
template
<>
class
<
int
>
:
public
{
public
:
_NODISCARD static constexpr int (min)() noexcept
static
constexpr
int
(
)()
noexcept
{
return (INT_MIN);
return
((-
2147483647
-
1
));
}
_NODISCARD static constexpr int (max)() noexcept
static
constexpr
int
(
)()
noexcept
{
}
_NODISCARD static constexpr int lowest() noexcept
static
constexpr
int
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr int epsilon() noexcept
static
constexpr
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr int round_error() noexcept
static
constexpr
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr int denorm_min() noexcept
static
constexpr
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr int infinity() noexcept
static
constexpr
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr int quiet_NaN() noexcept
static
constexpr
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr int signaling_NaN() noexcept
static
constexpr
int
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
31
;
static
constexpr
int
=
9
;
};
template
<>
class
<
unsigned
int
>
:
public
{
public
:
_NODISCARD static constexpr unsigned int (min)() noexcept
static
constexpr
unsigned
int
(
)()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned int (max)() noexcept
static
constexpr
unsigned
int
(
)()
noexcept
{
}
_NODISCARD static constexpr unsigned int lowest() noexcept
static
constexpr
unsigned
int
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr unsigned int epsilon() noexcept
static
constexpr
unsigned
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned int round_error() noexcept
static
constexpr
unsigned
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned int denorm_min() noexcept
static
constexpr
unsigned
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned int infinity() noexcept
static
constexpr
unsigned
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned int quiet_NaN() noexcept
static
constexpr
unsigned
int
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned int signaling_NaN() noexcept
static
constexpr
unsigned
int
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
32
;
static
constexpr
int
=
9
;
};
template
<>
class
<
long
>
:
public
{
public
:
_NODISCARD static constexpr long (min)() noexcept
static
constexpr
long
(
)()
noexcept
{
return (LONG_MIN);
return
((-
2147483647L
-
1
));
}
_NODISCARD static constexpr long (max)() noexcept
static
constexpr
long
(
)()
noexcept
{
}
_NODISCARD static constexpr long lowest() noexcept
static
constexpr
long
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr long epsilon() noexcept
static
constexpr
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long round_error() noexcept
static
constexpr
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long denorm_min() noexcept
static
constexpr
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long infinity() noexcept
static
constexpr
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long quiet_NaN() noexcept
static
constexpr
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long signaling_NaN() noexcept
static
constexpr
long
()
noexcept
{
return
(
0
);
}
static_assert
(
sizeof
(
int
)
sizeof
(
long
),
"LLP64 assumption"
);
static
constexpr
bool
=
true
;
static
constexpr
int
=
31
;
static
constexpr
int
=
9
;
};
template
<>
class
<
unsigned
long
>
:
public
{
public
:
_NODISCARD static constexpr unsigned long (min)() noexcept
static
constexpr
unsigned
long
(
)()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long (max)() noexcept
static
constexpr
unsigned
long
(
)()
noexcept
{
}
_NODISCARD static constexpr unsigned long lowest() noexcept
static
constexpr
unsigned
long
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr unsigned long epsilon() noexcept
static
constexpr
unsigned
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long round_error() noexcept
static
constexpr
unsigned
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long denorm_min() noexcept
static
constexpr
unsigned
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long infinity() noexcept
static
constexpr
unsigned
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long quiet_NaN() noexcept
static
constexpr
unsigned
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long signaling_NaN() noexcept
static
constexpr
unsigned
long
()
noexcept
{
return
(
0
);
}
static_assert
(
sizeof
(
unsigned
int
)
sizeof
(
unsigned
long
),
"LLP64 assumption"
);
static
constexpr
bool
=
true
;
static
constexpr
int
=
32
;
static
constexpr
int
=
9
;
};
template
<>
class
<
char32_t
>
:
public
{
public
:
_NODISCARD static constexpr char32_t (min)() noexcept
static
constexpr
char32_t
(
)()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char32_t (max)() noexcept
static
constexpr
char32_t
(
)()
noexcept
{
}
_NODISCARD static constexpr char32_t lowest() noexcept
static
constexpr
char32_t
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr char32_t epsilon() noexcept
static
constexpr
char32_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char32_t round_error() noexcept
static
constexpr
char32_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char32_t denorm_min() noexcept
static
constexpr
char32_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char32_t infinity() noexcept
static
constexpr
char32_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char32_t quiet_NaN() noexcept
static
constexpr
char32_t
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr char32_t signaling_NaN() noexcept
static
constexpr
char32_t
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
32
;
static
constexpr
int
=
9
;
};
template
<>
class
<
long
long
>
:
public
{
public
:
_NODISCARD static constexpr long long (min)() noexcept
static
constexpr
long
long
(
)()
noexcept
{
return (LLONG_MIN);
return
((-
9223372036854775807i64
-
1
));
}
_NODISCARD static constexpr long long (max)() noexcept
static
constexpr
long
long
(
)()
noexcept
{
return (LLONG_MAX);
return
(
9223372036854775807i64
);
}
_NODISCARD static constexpr long long lowest() noexcept
static
constexpr
long
long
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr long long epsilon() noexcept
static
constexpr
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long long round_error() noexcept
static
constexpr
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long long denorm_min() noexcept
static
constexpr
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long long infinity() noexcept
static
constexpr
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long long quiet_NaN() noexcept
static
constexpr
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr long long signaling_NaN() noexcept
static
constexpr
long
long
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
63
;
static
constexpr
int
=
18
;
};
template
<>
class
<
unsigned
long
long
>
:
public
{
public
:
_NODISCARD static constexpr unsigned long long (min)() noexcept
static
constexpr
unsigned
long
long
(
)()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long long (max)() noexcept
static
constexpr
unsigned
long
long
(
)()
noexcept
{
return (ULLONG_MAX);
return
(
0xffffffffffffffffui64
);
}
_NODISCARD static constexpr unsigned long long lowest() noexcept
static
constexpr
unsigned
long
long
()
noexcept
{
return
((
)());
}
_NODISCARD static constexpr unsigned long long epsilon() noexcept
static
constexpr
unsigned
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long long round_error() noexcept
static
constexpr
unsigned
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long long denorm_min() noexcept
static
constexpr
unsigned
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long long infinity() noexcept
static
constexpr
unsigned
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long long quiet_NaN() noexcept
static
constexpr
unsigned
long
long
()
noexcept
{
return
(
0
);
}
_NODISCARD static constexpr unsigned long long signaling_NaN() noexcept
static
constexpr
unsigned
long
long
()
noexcept
{
return
(
0
);
}
static
constexpr
bool
=
true
;
static
constexpr
int
=
64
;
static
constexpr
int
=
19
;
};
template
<>
class
<
float
>
:
public
{
public
:
_NODISCARD static constexpr float (min)() noexcept
static
constexpr
float
(
)()
noexcept
{
return (FLT_MIN);
return
(
1.175494351e-38F
);
}
_NODISCARD static constexpr float (max)() noexcept
static
constexpr
float
(
)()
noexcept
{
return (FLT_MAX);
return
(
3.402823466e+38F
);
}
_NODISCARD static constexpr float lowest() noexcept
static
constexpr
float
()
noexcept
{
return
(-(
)());
}
_NODISCARD static constexpr float epsilon() noexcept
static
constexpr
float
()
noexcept
{
return (FLT_EPSILON);
return
(
1.192092896e-07F
);
}
_NODISCARD static constexpr float round_error() noexcept
static
constexpr
float
()
noexcept
{
return
(
0.5F
);
}
_NODISCARD static constexpr float denorm_min() noexcept
static
constexpr
float
()
noexcept
{
return (FLT_TRUE_MIN);
return
(
1.401298464e-45F
);
}
_NODISCARD static constexpr float infinity() noexcept
static
constexpr
float
()
noexcept
{
return
(__builtin_huge_valf());
}
_NODISCARD static constexpr float quiet_NaN() noexcept
static
constexpr
float
()
noexcept
{
return
(__builtin_nanf(
"0"
));
}
_NODISCARD static constexpr float signaling_NaN() noexcept
static
constexpr
float
()
noexcept
{
return
(__builtin_nansf(
"1"
));
}
static constexpr int digits = FLT_MANT_DIG;
static
constexpr
int
=
24
;
static constexpr int digits10 = FLT_DIG;
static
constexpr
int
=
6
;
static
constexpr
int
=
9
;
static constexpr int max_exponent = FLT_MAX_EXP;
static
constexpr
int
=
128
;
static constexpr int max_exponent10 = FLT_MAX_10_EXP;
static
constexpr
int
=
38
;
static constexpr int min_exponent = FLT_MIN_EXP;
static
constexpr
int
= (-
125
);
static constexpr int min_exponent10 = FLT_MIN_10_EXP;
static
constexpr
int
= (-
37
);
};
template
<>
class
<
double
>
:
public
{
public
:
_NODISCARD static constexpr double (min)() noexcept
static
constexpr
double
(
)()
noexcept
{
return (DBL_MIN);
return
(
2.2250738585072014e-308
);
}
_NODISCARD static constexpr double (max)() noexcept
static
constexpr
double
(
)()
noexcept
{
return (DBL_MAX);
return
(
1.7976931348623158e+308
);
}
_NODISCARD static constexpr double lowest() noexcept
static
constexpr
double
()
noexcept
{
return
(-(
)());
}
_NODISCARD static constexpr double epsilon() noexcept
static
constexpr
double
()
noexcept
{
return (DBL_EPSILON);
return
(
2.2204460492503131e-016
);
}
_NODISCARD static constexpr double round_error() noexcept
static
constexpr
double
()
noexcept
{
return
(
0.5
);
}
_NODISCARD static constexpr double denorm_min() noexcept
static
constexpr
double
()
noexcept
{
return (DBL_TRUE_MIN);
return
(
4.9406564584124654e-324
);
}
_NODISCARD static constexpr double infinity() noexcept
static
constexpr
double
()
noexcept
{
return
(__builtin_huge_val());
}
_NODISCARD static constexpr double quiet_NaN() noexcept
static
constexpr
double
()
noexcept
{
return
(__builtin_nan(
"0"
));
}
_NODISCARD static constexpr double signaling_NaN() noexcept
static
constexpr
double
()
noexcept
{
return
(__builtin_nans(
"1"
));
}
static constexpr int digits = DBL_MANT_DIG;
static
constexpr
int
=
53
;
static constexpr int digits10 = DBL_DIG;
static
constexpr
int
=
15
;
static
constexpr
int
=
17
;
static constexpr int max_exponent = DBL_MAX_EXP;
static
constexpr
int
=
1024
;
static constexpr int max_exponent10 = DBL_MAX_10_EXP;
static
constexpr
int
=
308
;
static constexpr int min_exponent = DBL_MIN_EXP;
static
constexpr
int
= (-
1021
);
static constexpr int min_exponent10 = DBL_MIN_10_EXP;
static
constexpr
int
= (-
307
);
};
template
<>
class
<
long
double
>
:
public
{
public
:
_NODISCARD static constexpr long double (min)() noexcept
static
constexpr
long
double
(
)()
noexcept
{
return (LDBL_MIN);
return
(
2.2250738585072014e-308
);
}
_NODISCARD static constexpr long double (max)() noexcept
static
constexpr
long
double
(
)()
noexcept
{
return (LDBL_MAX);
return
(
1.7976931348623158e+308
);
}
_NODISCARD static constexpr long double lowest() noexcept
static
constexpr
long
double
()
noexcept
{
return
(-(
)());
}
_NODISCARD static constexpr long double epsilon() noexcept
static
constexpr
long
double
()
noexcept
{
return (LDBL_EPSILON);
return
(
2.2204460492503131e-016
);
}
_NODISCARD static constexpr long double round_error() noexcept
static
constexpr
long
double
()
noexcept
{
return
(
0.5L
);
}
_NODISCARD static constexpr long double denorm_min() noexcept
static
constexpr
long
double
()
noexcept
{
return (LDBL_TRUE_MIN);
return
(
4.9406564584124654e-324
);
}
_NODISCARD static constexpr long double infinity() noexcept
static
constexpr
long
double
()
noexcept
{
return
(__builtin_huge_val());
}
_NODISCARD static constexpr long double quiet_NaN() noexcept
static
constexpr
long
double
()
noexcept
{
return
(__builtin_nan(
"0"
));
}
_NODISCARD static constexpr long double signaling_NaN() noexcept
static
constexpr
long
double
()
noexcept
{
return
(__builtin_nans(
"1"
));
}
static constexpr int digits = LDBL_MANT_DIG;
static
constexpr
int
=
53
;
static constexpr int digits10 = LDBL_DIG;
static
constexpr
int
=
15
;
static
constexpr
int
=
17
;
static constexpr int max_exponent = LDBL_MAX_EXP;
static
constexpr
int
=
1024
;
static constexpr int max_exponent10 = LDBL_MAX_10_EXP;
static
constexpr
int
=
308
;
static constexpr int min_exponent = LDBL_MIN_EXP;
static
constexpr
int
= (-
1021
);
static constexpr int min_exponent10 = LDBL_MIN_10_EXP;
static
constexpr
int
= (-
307
);
};
#pragma pop_macro("new")
_STL_RESTORE_CLANG_WARNINGS
#pragma warning(pop)
#pragma warning(pop)
#pragma pack(pop)
#endif /* RC_INVOKED */
#endif /* _LIMITS_ */
#pragma pack(pop)