Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用指向可变模板参数的指针初始化_C++_Inheritance_C++11_Variadic Templates - Fatal编程技术网

C++ 使用指向可变模板参数的指针初始化

C++ 使用指向可变模板参数的指针初始化,c++,inheritance,c++11,variadic-templates,C++,Inheritance,C++11,Variadic Templates,有人能告诉我为什么这个代码不起作用: template <template <class... Ts> class Derived> struct Base { Base(Derived<Ts...>* d_param) : d(d_param) {} Derived<Ts...>* d; }; 模板 结构基 { 基(派生*d_参数):d(d_参数){} 导出*d; }; 我使用的是GCC 4.8.1。问题在于模板参数可能具有模板

有人能告诉我为什么这个代码不起作用:

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

   Derived<Ts...>* d;
};
模板
结构基
{
基(派生*d_参数):d(d_参数){}
导出*d;
};

我使用的是GCC 4.8.1。

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

template< class Derived >
struct Base
{
    Base(Derived* d_param) : d(d_param) {}
    Derived* d;
};
模板
结构基
{
基(派生*d_参数):d(d_参数){}
导出*d;
};
用作

Base< std::map< int, double > > x;
Base< std::map, int, double > x;
Base>x;
或者,如果需要单独的参数,则第二个选项是:

template< template<class...> class Derived, class... Ts >
struct Base
{
    Base(Derived<Ts...>* d_param) : d(d_param) {}
    Derived<Ts...>* d;
};
template
结构基
{
基(派生*d_参数):d(d_参数){}
导出*d;
};
用作

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

第二个正是我要找的。非常感谢。