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;
第二个正是我要找的。非常感谢。