summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/default-arguments.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-06-15 14:20:42 +0000
committerDouglas Gregor <dgregor@apple.com>2011-06-15 14:20:42 +0000
commit55462626b612128049c91ee2ada992a351052ded (patch)
treee8034b94a0f4564fbb9b2a087ef1b96472c88ba0 /clang/test/SemaTemplate/default-arguments.cpp
parent24c65588653b6cf6d14555bc1b15f17f88f29ac0 (diff)
downloadbcm5719-llvm-55462626b612128049c91ee2ada992a351052ded.tar.gz
bcm5719-llvm-55462626b612128049c91ee2ada992a351052ded.zip
When performing substitution of default template template parameters
before the template parameters have acquired a proper context (e.g., because the enclosing context has yet to be built), provide empty parameter lists for all outer template parameter scopes to inhibit any substitution for those template parameters. Fixes PR9643 / <rdar://problem/9251019>. llvm-svn: 133055
Diffstat (limited to 'clang/test/SemaTemplate/default-arguments.cpp')
-rw-r--r--clang/test/SemaTemplate/default-arguments.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/default-arguments.cpp b/clang/test/SemaTemplate/default-arguments.cpp
index 9ea0fc2e4d5..6391369aa5c 100644
--- a/clang/test/SemaTemplate/default-arguments.cpp
+++ b/clang/test/SemaTemplate/default-arguments.cpp
@@ -121,3 +121,18 @@ X6<long, X5b> x6c;
template<template<class> class X = B<int> > struct X7; // expected-error{{must be a class template}}
+
+namespace PR9643 {
+ template<typename T> class allocator {};
+ template<typename T, typename U = allocator<T> > class vector {};
+
+ template<template<typename U, typename = allocator<U> > class container,
+ typename DT>
+ container<DT> initializer(const DT& d) {
+ return container<DT>();
+ }
+
+ void f() {
+ vector<int, allocator<int> > v = initializer<vector>(5);
+ }
+}
OpenPOWER on IntegriCloud