1 // Example from issue 1125 drafting; D() and v were well-formed with the
2 // wording approved in Rapperswil, now seems they should be ill-formed.
3 // { dg-do compile { target c++11 } }
4 
5 struct B {
BB6   constexpr B(int x) : i(0) { }    // "x" is unused
7   int i;
8 };
9 
10 int global;			// { dg-message "not const" }
11 
12 struct D : B {
DD13   constexpr D() : B(global) { }   // { dg-error "global|argument" }
14 };
15 
16 struct A2 {
A2A217   constexpr A2(bool b, int x) : m(b ? 42 : x) { }
18   int m;
19 };
20 
21 // ok, constructor call initializes m with the value 42 after substitution
22 constexpr int v = A2(true, global).m; // { dg-error "global" }
23 // error: initializer for m is "x", which is non-constant
24 constexpr int w = A2(false, global).m; // { dg-error "global" }
25