blob: a1a6a362ec38cc28db667924154084dcb172dcb4 (
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-options "-std=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
|