diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-03-31 00:43:58 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-03-31 00:43:58 +0000 |
commit | b67535d1b6d7fed3388fd01084e4a3f624cf4e2a (patch) | |
tree | 154ad36e01bd53e6e204ebd9a576f92db97764ba /clang/test/SemaTemplate/metafun-apply.cpp | |
parent | b874bd9f4198c54b5bb974929dd813e3cc85d2a2 (diff) | |
download | bcm5719-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.cpp | 29 |
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 |