diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-02-03 20:19:35 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-02-03 20:19:35 +0000 |
commit | 3d3f75a995cee883428f3e5c331433c9c1d76725 (patch) | |
tree | c025daba400ead4ffbb37cc81f9ac5158a791e21 /clang/test/SemaCXX/member-pointer.cpp | |
parent | fc7c76159cf5027dc28e95e3d2471d4becbc53aa (diff) | |
download | bcm5719-llvm-3d3f75a995cee883428f3e5c331433c9c1d76725.tar.gz bcm5719-llvm-3d3f75a995cee883428f3e5c331433c9c1d76725.zip |
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
Diffstat (limited to 'clang/test/SemaCXX/member-pointer.cpp')
-rw-r--r-- | clang/test/SemaCXX/member-pointer.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/member-pointer.cpp b/clang/test/SemaCXX/member-pointer.cpp index 31973c12570..450fdba367f 100644 --- a/clang/test/SemaCXX/member-pointer.cpp +++ b/clang/test/SemaCXX/member-pointer.cpp @@ -40,3 +40,23 @@ void f() { // 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; +} |