1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoclass A { 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaopublic: 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int& i; 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao A(int& i) : i(i) { } 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao static int s; 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T> void ft(T& t) { 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao t.*&T::i = 10; // expected-error{{cannot form a pointer-to-member to member 'i' of reference type 'int &'}} 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid f() { 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int b; 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao A a(b); 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao int A::*ip = &A::s; // expected-error {{cannot initialize a variable of type 'int A::*' with an rvalue of type 'int *'}} 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines a.*&A::s = 10; // expected-error{{right hand operand to .* has non-pointer-to-member type 'int *'}} 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao a.*&A::i = 10; // expected-error{{cannot form a pointer-to-member to member 'i' of reference type 'int &'}} 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ft(a); // expected-note{{in instantiation of function template specialization 'ft<A>' requested here}} 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void A::*p = 0; // expected-error{{'p' declared as a member pointer to void}} 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} 27