diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C new file mode 100644 index 000000000..08552cd7d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C @@ -0,0 +1,30 @@ +// { dg-options "-std=c++0x" } + +#define SA(X) static_assert (X, #X) + +struct A +{ + int i; + constexpr A(int _i) { i = _i; } // { dg-error "empty body|uninitialized member" } +}; + +template <class T> +struct B +{ + T t; + constexpr B(T _t): t(_t) { } +}; + +B<int> b(1); // { dg-message "not declared .constexpr" } +SA(b.t==1); // { dg-error "non-constant condition|'b'" } +constexpr B<int> b2(1); +SA(b2.t==1); + +template <class T> +constexpr T f(T a, T b) +{ + typedef T myT; + return a + b; +} + +SA(f(1,2)==3); |