PR c++/85553
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / alias-decl-7.C
blobf5911d9df58f7ac27bc784ca994371b28ccf8133
1 // { dg-do compile { target c++11 } }
3 // Add arguments to unbound template template parameter.
5 template <template <class> class Template>
6 struct Internal {
7   template <class Arg> using Bind = Template<Arg>;
8 };
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>'.
21 template <template <class> class Template, class Argument>
22 using Bind = Instantiate<Internal<Template>::template Bind, Argument>; //#1