]>
Commit | Line | Data |
---|---|---|
fa2200cb | 1 | // Test that we explain why a template instantiation isn't constexpr |
4b2e63de | 2 | // { dg-do compile { target c++11 } } |
fa2200cb JM |
3 | |
4 | template <class T> | |
5 | struct A | |
6 | { | |
7 | T t; | |
54069e59 | 8 | constexpr int f() const { return 42; } // { dg-error "enclosing class" "" { target c++11_only } } |
fa2200cb JM |
9 | }; |
10 | ||
11 | struct B { B(); operator int(); }; | |
12 | ||
13 | constexpr A<int> ai = { 42 }; | |
14 | constexpr int i = ai.f(); | |
15 | ||
54069e59 | 16 | constexpr int b = A<B>().f(); // { dg-error "" } |
fa2200cb JM |
17 | |
18 | template <class T> | |
4b691b13 JM |
19 | constexpr int f (T t) { return 42; } |
20 | constexpr int x = f(B()); // { dg-error "non-literal" } |