与模板模板类一起使用的自定义模板参数绑定器

时间:2014-05-17 11:04:51

标签: c++ templates inheritance arguments bind

我有一个带有3个参数的模板类,我需要先将其中的2个绑定,然后将该绑定版本传递给" Parent" template template class我继承自。 (我已经搜索了之前提出的问题,但没有人试图从父母那里继承。)

我怎么能让它起作用?

以下是示例代码:

template <template<class> class W, class ...D>
struct Parent{};

template <class B, class T, class ...D>
struct Arg{};

template <class B, class ...D>
struct Bind{
    template <class T>
    using arg = Arg<B, T, D...>;
};

template <class B, class ...D>
struct DD : public Parent<Bind<B, D...>::t, D...> //compiler complains*
{ };

 * template argument for template template parameter must be a class template or type alias template.

我尝试过使用typename关键字;在[{1}}中使用struct继承代替using directive,没有一个有效。

1 个答案:

答案 0 :(得分:4)

首先,您可能在代码段中使用Bind<B, D...>::arg而不是Bind<B, D...>::t

其次,您需要template关键字,因为Bind<B, D...>是类型相关的 id-expression 。即。

template <class B, class ...D>
struct DD : public Parent<Bind<B, D...>::template arg, D...>
{ };