我有一个带有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
,没有一个有效。
答案 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...>
{ };