1 // { dg-do compile { target c++11 } }
2 
3 // Add arguments to unbound template template parameter.
4 
5 template <template <class> class Template>
6 struct Internal {
7   template <class Arg> using Bind = Template<Arg>;
8 };
9 
10 template <template <class> class Template, class Arg>
11 using Instantiate = Template<Arg>; // After parsing #1, the
12                                    // BOUND_TEMPLATE_TEMPLATE_PARM
13                                    // parameter Template gets
14                                    // the UNBOUND_CLASS_TEMPLATE
15                                    // Internal<Template>::template Bind
16                                    // as an argument, and the
17                                    // parameter Arg gets Argument as
18                                    // an argument.  And we build
19                                    // 'Bind<Argument>'.
20 
21 template <template <class> class Template, class Argument>
22 using Bind = Instantiate<Internal<Template>::template Bind, Argument>; //#1
23 
24