diff options
author | Anders Carlsson <andersca@mac.com> | 2009-07-09 00:05:08 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-07-09 00:05:08 +0000 |
commit | 03f89b18283a63f2f445777c4090880af61e90ad (patch) | |
tree | 927fb07a888f6af44da1a72c18f0a5c1b2b42c2f /clang/test/CXX | |
parent | da0cf0b1342c6fb38758d18a42ed9be98b9255c4 (diff) | |
download | bcm5719-llvm-03f89b18283a63f2f445777c4090880af61e90ad.tar.gz bcm5719-llvm-03f89b18283a63f2f445777c4090880af61e90ad.zip |
Store the isAddressOfOperand in the UnresolvedDeclRefExpr, so that we can pass it when instantiating the expr. Fixes another member pointer bug.
llvm-svn: 75075
Diffstat (limited to 'clang/test/CXX')
-rw-r--r-- | clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp b/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp index ee3cbeae4e0..101d75fc0f4 100644 --- a/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp +++ b/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp @@ -8,13 +8,19 @@ public: static int s; }; +template<typename T> void ft(T& t) { + t.*&T::i = 10; // expected-error{{cannot form a pointer-to-member to member 'i' of reference type 'int &'}} +} + void f() { int b; A a(b); int A::*ip = &A::s; // expected-error {{incompatible type initializing 'int *', expected 'int class A::*'}} a.*&A::s = 10; // expected-error{{right hand operand to .* has non pointer-to-member type 'int *'}} + a.*&A::i = 10; // expected-error{{cannot form a pointer-to-member to member 'i' of reference type 'int &'}} - + ft(a); // expected-note{{in instantiation of function template specialization 'ft' requested here}} + void A::*p = 0; // expected-error{{'p' declared as a member pointer to void}} } |