【问题标题】:Custom template argument binder to use with with template template class [duplicate]与模板模板类一起使用的自定义模板参数绑定器[重复]
【发布时间】:2014-05-17 11:04:50
【问题描述】:

我有一个带有 3 个参数的模板类,我需要先绑定其中的 2 个,然后再将绑定的版本传递给我继承自的“父”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关键字;并在Binder 中使用struct 继承而不是using directive,没有任何效果。

【问题讨论】:

    标签: c++ templates inheritance arguments bind


    【解决方案1】:

    首先,您可能指的是代码 sn-p 中的 Bind&lt;B, D...&gt;::arg 而不是 Bind&lt;B, D...&gt;::t

    其次,您需要template 关键字,因为Bind&lt;B, D...&gt; 是一个依赖于类型的id 表达式。即

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

    【讨论】:

    • 欢迎来到 StackOverflow!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多