aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp23/ext-floating18.C
blob: ece25464bfdf77edab50ef12ba94ef267c58cf13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// P1467R9 - Extended floating-point types and standard names.
// { dg-do compile { target c++23 } }
// { dg-options "" }
// { dg-add-options float32 }

constexpr int foo (float) { return 1; }
constexpr int foo (double) { return 2; }
constexpr int foo (long double) { return 3; }

#ifdef __STDCPP_FLOAT32_T__
#if __FLT_MAX_EXP__ == __FLT32_MAX_EXP__ \
    && __FLT_MAX_DIG__ == __FLT32_MAX_DIG__
#if __FLT_MAX_EXP__ == __DBL_MAX_EXP__ \
    && __FLT_MAX_DIG__ == __DBL_MAX_DIG__
static_assert (foo (1.0f32) == 2);
#else
static_assert (foo (1.0f32) == 1);
#endif
#endif
#endif
#ifdef __STDCPP_FLOAT64_T__
#if __DBL_MAX_EXP__ == __FLT64_MAX_EXP__ \
    && __DBL_MAX_DIG__ == __FLT64_MAX_DIG__
static_assert (foo (1.0f64) == 2);
#endif
#endif