【问题标题】:Class with pointers to variadic template template parameters带有指向可变参数模板模板参数的指针的类
【发布时间】:2014-02-03 10:43:25
【问题描述】:

谁能告诉我为什么这段代码不起作用:

template <template <class... Ts> class Derived>
struct Base
{
   Base(Derived<Ts...>* d_param) : d(d_param) {}

   Derived<Ts...>* d;
};

我使用的是 GCC 4.8.1。

【问题讨论】:

    标签: c++ inheritance c++11 variadic-templates


    【解决方案1】:

    问题是模板模板参数可能具有模板参数的标识符,但它们不可用。根据您的设想用途,您需要分别传入完整类型或模板及其参数。第一个选项的示例:

    template< class Derived >
    struct Base
    {
        Base(Derived* d_param) : d(d_param) {}
        Derived* d;
    };
    

    用作

    Base< std::map< int, double > > x;
    

    或者如果您需要单独的参数,您的第二个选择是:

    template< template<class...> class Derived, class... Ts >
    struct Base
    {
        Base(Derived<Ts...>* d_param) : d(d_param) {}
        Derived<Ts...>* d;
    };
    

    用作

    Base< std::map, int, double > x;
    

    【讨论】:

    • 第二个正是我要找的。谢谢!
    猜你喜欢
    • 2013-12-26
    • 2013-04-30
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2015-01-20
    • 1970-01-01
    相关资源
    最近更新 更多