[C++ PATCH] Deprecate -ffriend-injection
[official-gcc.git] / gcc / testsuite / g++.dg / cpp2a / bitfield2.C
blobdcb424fc8f6624c1bac83e900774ef138a1a5f40
1 // P0683R1
2 // { dg-do compile { target c++11 } }
3 // { dg-options "" }
5 int a;
6 const int b = 0;
7 struct T {
8   int i : true ? 10 : b = 6;    // { dg-error "assignment of read-only variable" }
9   int : 4 = 10;                 // { dg-error "default member initializer for unnamed bit-field" }
10   int : 5 = a + b;              // { dg-error "default member initializer for unnamed bit-field" }
12 template <bool V, int W>
13 struct U {
14   int j : W = 7;                // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
15   int k : W { 8 };              // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
16   int l : V ? 7 : a = 3;        // { dg-error "modification of .a. is not a constant expression" }
17                                 // { dg-error "width not an integer constant" "" { target *-*-* } .-1 }
18   int m : (V ? W : b) = 9;      // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
19                                 // { dg-error "zero width for bit-field" "" { target *-*-* } .-1 }
20   int n : (V ? W : b) { 10 };   // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
21                                 // { dg-error "zero width for bit-field" "" { target *-*-* } .-1 }
22   int o : 1 || new int { 0 };
23   int : 4 = 10;                 // { dg-error "default member initializer for unnamed bit-field" }
24   int : 5 = a + b;              // { dg-error "default member initializer for unnamed bit-field" }
26 U<false, 10> u;