Make sure we consistently canonicalize types when canonicalizing TemplateTemplateParmDecls.  PR12179.

llvm-svn: 152189
diff --git a/clang/test/SemaTemplate/temp_arg_template.cpp b/clang/test/SemaTemplate/temp_arg_template.cpp
index 9c34089..106111e 100644
--- a/clang/test/SemaTemplate/temp_arg_template.cpp
+++ b/clang/test/SemaTemplate/temp_arg_template.cpp
@@ -54,3 +54,9 @@
 
   void f0( Y<int,1> y){ 1 << y; } // expected-note{{in instantiation of function template specialization 'N::operator<<<Y, int, 1>' requested here}}
 }
+
+// PR12179
+template <typename Primitive, template <Primitive...> class F>
+struct unbox_args {
+  typedef typename Primitive::template call<F> x;
+};