//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include /* : numeric_limits is_specialized digits digits10 max_digits10 is_signed is_integer is_exact radix min_exponent min_exponent10 max_exponent max_exponent10 has_infinity has_quiet_NaN has_signaling_NaN has_denorm has_denorm_loss is_iec559 is_bounded is_modulo traps tinyness_before round_style */ template void test(const _Tp &) {} #define TEST_NUMERIC_LIMITS(type) \ test(std::numeric_limits::is_specialized); \ test(std::numeric_limits::digits); \ test(std::numeric_limits::digits10); \ test(std::numeric_limits::max_digits10); \ test(std::numeric_limits::is_signed); \ test(std::numeric_limits::is_integer); \ test(std::numeric_limits::is_exact); \ test(std::numeric_limits::radix); \ test(std::numeric_limits::min_exponent); \ test(std::numeric_limits::min_exponent10); \ test(std::numeric_limits::max_exponent); \ test(std::numeric_limits::max_exponent10); \ test(std::numeric_limits::has_infinity); \ test(std::numeric_limits::has_quiet_NaN); \ test(std::numeric_limits::has_signaling_NaN); \ test(std::numeric_limits::has_denorm); \ test(std::numeric_limits::has_denorm_loss); \ test(std::numeric_limits::is_iec559); \ test(std::numeric_limits::is_bounded); \ test(std::numeric_limits::is_modulo); \ test(std::numeric_limits::traps); \ test(std::numeric_limits::tinyness_before); \ test(std::numeric_limits::round_style); struct other {}; int main() { // bool TEST_NUMERIC_LIMITS(bool) TEST_NUMERIC_LIMITS(const bool) TEST_NUMERIC_LIMITS(volatile bool) TEST_NUMERIC_LIMITS(const volatile bool) // char TEST_NUMERIC_LIMITS(char) TEST_NUMERIC_LIMITS(const char) TEST_NUMERIC_LIMITS(volatile char) TEST_NUMERIC_LIMITS(const volatile char) // signed char TEST_NUMERIC_LIMITS(signed char) TEST_NUMERIC_LIMITS(const signed char) TEST_NUMERIC_LIMITS(volatile signed char) TEST_NUMERIC_LIMITS(const volatile signed char) // unsigned char TEST_NUMERIC_LIMITS(unsigned char) TEST_NUMERIC_LIMITS(const unsigned char) TEST_NUMERIC_LIMITS(volatile unsigned char) TEST_NUMERIC_LIMITS(const volatile unsigned char) // wchar_t TEST_NUMERIC_LIMITS(wchar_t) TEST_NUMERIC_LIMITS(const wchar_t) TEST_NUMERIC_LIMITS(volatile wchar_t) TEST_NUMERIC_LIMITS(const volatile wchar_t) // char16_t TEST_NUMERIC_LIMITS(char16_t) TEST_NUMERIC_LIMITS(const char16_t) TEST_NUMERIC_LIMITS(volatile char16_t) TEST_NUMERIC_LIMITS(const volatile char16_t) // char32_t TEST_NUMERIC_LIMITS(char32_t) TEST_NUMERIC_LIMITS(const char32_t) TEST_NUMERIC_LIMITS(volatile char32_t) TEST_NUMERIC_LIMITS(const volatile char32_t) // short TEST_NUMERIC_LIMITS(short) TEST_NUMERIC_LIMITS(const short) TEST_NUMERIC_LIMITS(volatile short) TEST_NUMERIC_LIMITS(const volatile short) // int TEST_NUMERIC_LIMITS(int) TEST_NUMERIC_LIMITS(const int) TEST_NUMERIC_LIMITS(volatile int) TEST_NUMERIC_LIMITS(const volatile int) // long TEST_NUMERIC_LIMITS(long) TEST_NUMERIC_LIMITS(const long) TEST_NUMERIC_LIMITS(volatile long) TEST_NUMERIC_LIMITS(const volatile long) #ifndef _LIBCPP_HAS_NO_INT128 TEST_NUMERIC_LIMITS(__int128_t) TEST_NUMERIC_LIMITS(const __int128_t) TEST_NUMERIC_LIMITS(volatile __int128_t) TEST_NUMERIC_LIMITS(const volatile __int128_t) #endif // long long TEST_NUMERIC_LIMITS(long long) TEST_NUMERIC_LIMITS(const long long) TEST_NUMERIC_LIMITS(volatile long long) TEST_NUMERIC_LIMITS(const volatile long long) // unsigned short TEST_NUMERIC_LIMITS(unsigned short) TEST_NUMERIC_LIMITS(const unsigned short) TEST_NUMERIC_LIMITS(volatile unsigned short) TEST_NUMERIC_LIMITS(const volatile unsigned short) // unsigned int TEST_NUMERIC_LIMITS(unsigned int) TEST_NUMERIC_LIMITS(const unsigned int) TEST_NUMERIC_LIMITS(volatile unsigned int) TEST_NUMERIC_LIMITS(const volatile unsigned int) // unsigned long TEST_NUMERIC_LIMITS(unsigned long) TEST_NUMERIC_LIMITS(const unsigned long) TEST_NUMERIC_LIMITS(volatile unsigned long) TEST_NUMERIC_LIMITS(const volatile unsigned long) // unsigned long long TEST_NUMERIC_LIMITS(unsigned long long) TEST_NUMERIC_LIMITS(const unsigned long long) TEST_NUMERIC_LIMITS(volatile unsigned long long) TEST_NUMERIC_LIMITS(const volatile unsigned long long) #ifndef _LIBCPP_HAS_NO_INT128 TEST_NUMERIC_LIMITS(__uint128_t) TEST_NUMERIC_LIMITS(const __uint128_t) TEST_NUMERIC_LIMITS(volatile __uint128_t) TEST_NUMERIC_LIMITS(const volatile __uint128_t) #endif // float TEST_NUMERIC_LIMITS(float) TEST_NUMERIC_LIMITS(const float) TEST_NUMERIC_LIMITS(volatile float) TEST_NUMERIC_LIMITS(const volatile float) // double TEST_NUMERIC_LIMITS(double) TEST_NUMERIC_LIMITS(const double) TEST_NUMERIC_LIMITS(volatile double) TEST_NUMERIC_LIMITS(const volatile double) // long double TEST_NUMERIC_LIMITS(long double) TEST_NUMERIC_LIMITS(const long double) TEST_NUMERIC_LIMITS(volatile long double) TEST_NUMERIC_LIMITS(const volatile long double) // other TEST_NUMERIC_LIMITS(other) TEST_NUMERIC_LIMITS(const other) TEST_NUMERIC_LIMITS(volatile other) TEST_NUMERIC_LIMITS(const volatile other) }