PR c++/85765 - SFINAE and non-type default template arg.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / constexpr-builtin2.C
blobdde38f05acded200e892dea993ed7f2a7f7bfb44
1 // PR c++/54021
2 // { dg-do compile { target c++11 } }
4 extern int nonconst_func(int);
5 constexpr int identity(int x) { return x; }
6 constexpr int zero() { return identity(0); }
7 constexpr int one() { return identity(1); }
9 // These are the same.  Only the latter is accepted, though.
10 constexpr int rejected_const_4(int x)
11 { return __builtin_constant_p(x) ? 4 : nonconst_func(x); }
12 constexpr int accepted_const_4(int x)
13 { return identity(__builtin_constant_p(x)) ? 4 : nonconst_func(x); }
15 // This is rejected.  I would like it to work.
16 constexpr int four = accepted_const_4(1);