blob: f5911d9df58f7ac27bc784ca994371b28ccf8133 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
// { 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
|