1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li struct A { AA4*67e74705SXin Li A() : value(), cvalue() { } // expected-error {{reference to type 'int' requires an initializer}} 5*67e74705SXin Li int &value; 6*67e74705SXin Li const int cvalue; 7*67e74705SXin Li }; 8*67e74705SXin Li 9*67e74705SXin Li struct B { 10*67e74705SXin Li int field; 11*67e74705SXin Li }; 12*67e74705SXin Li 13*67e74705SXin Li struct X { XX14*67e74705SXin Li X() { } // expected-error {{constructor for 'X' must explicitly initialize the reference member 'value'}} \ 15*67e74705SXin Li // expected-error {{constructor for 'X' must explicitly initialize the const member 'cvalue'}} \ 16*67e74705SXin Li // expected-error {{constructor for 'X' must explicitly initialize the reference member 'b'}} \ 17*67e74705SXin Li // expected-error {{constructor for 'X' must explicitly initialize the const member 'cb'}} 18*67e74705SXin Li int &value; // expected-note{{declared here}} 19*67e74705SXin Li const int cvalue; // expected-note{{declared here}} 20*67e74705SXin Li B& b; // expected-note{{declared here}} 21*67e74705SXin Li const B cb; // expected-note{{declared here}} 22*67e74705SXin Li }; 23*67e74705SXin Li 24*67e74705SXin Li 25*67e74705SXin Li // PR5924 26*67e74705SXin Li struct bar {}; 27*67e74705SXin Li bar xxx(); 28*67e74705SXin Li 29*67e74705SXin Li struct foo { 30*67e74705SXin Li foo_t a; // expected-error {{unknown type name 'foo_t'}} foofoo31*67e74705SXin Li foo() : a(xxx()) {} // no error here. 32*67e74705SXin Li }; 33