summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/metafun-apply.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-03-31 00:43:58 +0000
committerDouglas Gregor <dgregor@apple.com>2009-03-31 00:43:58 +0000
commitb67535d1b6d7fed3388fd01084e4a3f624cf4e2a (patch)
tree154ad36e01bd53e6e204ebd9a576f92db97764ba /clang/test/SemaTemplate/metafun-apply.cpp
parentb874bd9f4198c54b5bb974929dd813e3cc85d2a2 (diff)
downloadbcm5719-llvm-b67535d1b6d7fed3388fd01084e4a3f624cf4e2a.tar.gz
bcm5719-llvm-b67535d1b6d7fed3388fd01084e4a3f624cf4e2a.zip
Parsing and AST representation for dependent template names that occur
within nested-name-specifiers, e.g., for the "apply" in typename MetaFun::template apply<T1, T2>::type At present, we can't instantiate these nested-name-specifiers, so our testing is sketchy. llvm-svn: 68081
Diffstat (limited to 'clang/test/SemaTemplate/metafun-apply.cpp')
-rw-r--r--clang/test/SemaTemplate/metafun-apply.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/metafun-apply.cpp b/clang/test/SemaTemplate/metafun-apply.cpp
new file mode 100644
index 00000000000..22be5ab34f7
--- /dev/null
+++ b/clang/test/SemaTemplate/metafun-apply.cpp
@@ -0,0 +1,29 @@
+// RUN: clang-cc -fsyntax-only %s
+
+struct add_pointer {
+ template<typename T>
+ struct apply {
+ typedef T* type;
+ };
+};
+
+struct add_reference {
+ template<typename T>
+ struct apply {
+ typedef T& type;
+ };
+};
+
+template<typename MetaFun, typename T>
+struct apply1 {
+ typedef typename MetaFun::template apply<T>::type type;
+};
+
+#if 0
+// FIXME: The code below requires template instantiation for dependent
+// template-names that occur within nested-name-specifiers.
+int i;
+
+apply1<add_pointer, int>::type ip = &i;
+apply1<add_reference, int>::type ir = i;
+#endif
OpenPOWER on IntegriCloud