diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-11-12 18:38:13 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-11-12 18:38:13 +0000 |
commit | caddba07f82096ee0d0a0312727d4418ee7a8d36 (patch) | |
tree | 90ae2bddbd3ec5b9daa3e1ece12740cdda79113c /test/SemaTemplate/instantiate-member-pointers.cpp | |
parent | 23908b8a43adefd42b3635364cfab44de1064942 (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.cpp | 13 |
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); +} |