Allow taking the address of data members, resulting in a member pointer.
Pointers to functions don't work yet, and pointers to overloaded functions even less. Also, far too much illegal code is accepted.
llvm-svn: 63655
diff --git a/clang/test/SemaCXX/member-pointer.cpp b/clang/test/SemaCXX/member-pointer.cpp
index 31973c1..450fdba 100644
--- a/clang/test/SemaCXX/member-pointer.cpp
+++ b/clang/test/SemaCXX/member-pointer.cpp
@@ -40,3 +40,23 @@
// Conversion to member of base.
pdi1 = pdid; // expected-error {{incompatible type assigning 'int struct D::*', expected 'int struct A::*'}}
}
+
+struct HasMembers
+{
+ int i;
+ void f();
+};
+
+namespace Fake
+{
+ int i;
+ void f();
+}
+
+void g() {
+ int HasMembers::*pmi = &HasMembers::i;
+ int *pni = &Fake::i;
+
+ // FIXME: Test the member function, too.
+ void (*pnf)() = &Fake::f;
+}