2 // { dg-do compile { target c++11 } }
4 #define SA(X) static_assert((X),#X)
6 struct GS { constexpr operator int() { return 1; } };
9 constexpr int Test1(int x) { typedef int T; return T(x) + 1; }
10 constexpr int Test2(int x) { using T = int; return T(x) + 1; }
11 constexpr int Test3(int x) { typedef GS T; return x + T(); }
12 constexpr int Test4(int x) { using T = GS; return x + T(); }
13 constexpr int Test5(int x) { typedef GE T; return x + T::y; }
14 constexpr int Test6(int x) { using T = GE; return x + T::y; }
25 constexpr S1() { typedef int T; SA(T(1) == 1); }
30 constexpr S2() { using T = int; SA(T(1) == 1); }
35 constexpr S3() { typedef GS T; SA(T() == 1); }
40 constexpr S4() { using T = GS; SA(T() == 1); }
45 constexpr S5() { typedef GE T; SA(T::y == 1); }
50 constexpr S6() { using T = GE; SA(T::y == 1); }