blob: f5911d9df58f7ac27bc784ca994371b28ccf8133 [file] [log] [blame]
// { dg-do compile { target c++11 } }
// Add arguments to unbound template template parameter.
template <template <class> class Template>
struct Internal {
template <class Arg> using Bind = Template<Arg>;
};
template <template <class> class Template, class Arg>
using Instantiate = Template<Arg>; // After parsing #1, the
// BOUND_TEMPLATE_TEMPLATE_PARM
// parameter Template gets
// the UNBOUND_CLASS_TEMPLATE
// Internal<Template>::template Bind
// as an argument, and the
// parameter Arg gets Argument as
// an argument. And we build
// 'Bind<Argument>'.
template <template <class> class Template, class Argument>
using Bind = Instantiate<Internal<Template>::template Bind, Argument>; //#1