1*6b8e3c02SRichard Smith // RUN: %clang_cc1 -std=c++2a -verify %s 2*6b8e3c02SRichard Smith 3*6b8e3c02SRichard Smith namespace std_example { 4*6b8e3c02SRichard Smith int a; 5*6b8e3c02SRichard Smith const int b = 0; // expected-note {{here}} 6*6b8e3c02SRichard Smith struct S { 7*6b8e3c02SRichard Smith int x1 : 8 = 42; 8*6b8e3c02SRichard Smith int x2 : 8 { 42 }; 9*6b8e3c02SRichard Smith int y1 : true ? 8 : a = 42; 10*6b8e3c02SRichard Smith int y3 : (true ? 8 : b) = 42; 11*6b8e3c02SRichard Smith int z : 1 || new int { 1 }; 12*6b8e3c02SRichard Smith }; 13*6b8e3c02SRichard Smith static_assert(S{}.x1 == 42); 14*6b8e3c02SRichard Smith static_assert(S{}.x2 == 42); 15*6b8e3c02SRichard Smith static_assert(S{}.y1 == 0); 16*6b8e3c02SRichard Smith static_assert(S{}.y3 == 42); 17*6b8e3c02SRichard Smith static_assert(S{}.z == 0); 18*6b8e3c02SRichard Smith 19*6b8e3c02SRichard Smith struct T { 20*6b8e3c02SRichard Smith int y2 : true ? 8 : b = 42; // expected-error {{cannot assign to variable 'b'}} 21*6b8e3c02SRichard Smith }; 22*6b8e3c02SRichard Smith } 23