blob: dcb424fc8f6624c1bac83e900774ef138a1a5f40 [file] [log] [blame]
// P0683R1
// { dg-do compile { target c++11 } }
// { dg-options "" }
int a;
const int b = 0;
struct T {
int i : true ? 10 : b = 6; // { dg-error "assignment of read-only variable" }
int : 4 = 10; // { dg-error "default member initializer for unnamed bit-field" }
int : 5 = a + b; // { dg-error "default member initializer for unnamed bit-field" }
};
template <bool V, int W>
struct U {
int j : W = 7; // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
int k : W { 8 }; // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
int l : V ? 7 : a = 3; // { dg-error "modification of .a. is not a constant expression" }
// { dg-error "width not an integer constant" "" { target *-*-* } .-1 }
int m : (V ? W : b) = 9; // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
// { dg-error "zero width for bit-field" "" { target *-*-* } .-1 }
int n : (V ? W : b) { 10 }; // { dg-warning "default member initializers for bit-fields only available with" "" { target c++17_down } }
// { dg-error "zero width for bit-field" "" { target *-*-* } .-1 }
int o : 1 || new int { 0 };
int : 4 = 10; // { dg-error "default member initializer for unnamed bit-field" }
int : 5 = a + b; // { dg-error "default member initializer for unnamed bit-field" }
};
U<false, 10> u;