aboutsummaryrefslogtreecommitdiff
path: root/test/SemaTemplate/instantiate-member-pointers.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-11-12 18:38:13 +0000
committerDouglas Gregor <dgregor@apple.com>2009-11-12 18:38:13 +0000
commitcaddba07f82096ee0d0a0312727d4418ee7a8d36 (patch)
tree90ae2bddbd3ec5b9daa3e1ece12740cdda79113c /test/SemaTemplate/instantiate-member-pointers.cpp
parent23908b8a43adefd42b3635364cfab44de1064942 (diff)
Recognize (and check) pointer-to-member template arguments that are
non-type template parameters or constants of pointer-to-member type. Once checked, be sure to retain those pointer-to-member constants as expressions if they are dependent, or as declarations if they are not dependent. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87010 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaTemplate/instantiate-member-pointers.cpp')
-rw-r--r--test/SemaTemplate/instantiate-member-pointers.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/SemaTemplate/instantiate-member-pointers.cpp b/test/SemaTemplate/instantiate-member-pointers.cpp
index 63e6dac096..826ea1e3eb 100644
--- a/test/SemaTemplate/instantiate-member-pointers.cpp
+++ b/test/SemaTemplate/instantiate-member-pointers.cpp
@@ -33,3 +33,16 @@ struct X3 {
};
X3<int, Y, &Y::x> x3;
+
+typedef int Y::*IntMember;
+
+template<IntMember Member>
+struct X4 {
+ X3<int, Y, Member> member;
+
+ int &getMember(Y& y) { return y.*Member; }
+};
+
+int &get_X4(X4<&Y::x> x4, Y& y) {
+ return x4.getMember(y);
+}