从具有可变参数的模板类继承
inheriting from a templates class with variable parameters
我有此代码:
template<char ...T>
class base
{
std::array<uint8_t, ID_SIZE> m_ID = { Ts... };
}
template<char ...T>
class derived: public base<T>
{
// this class doesn;t need to know anything about T
}
编译此代码时,我会收到此错误:
'T': parameter pack must be expanded in this context
这个错误是什么,我如何解决?
多个模板参数(类型或非类型)不能作为包装传递,但必须每次都被打开包装:
template<char ...T>
class base { }
template<char ...T>
class derived: public base<T...> // unpack
{
}
base<>
的内部将在T。
T
不是一种类型,它是"参数包"的名称。
base<T>
是荒谬的,因为base
需要类型的列表,而不是一包类型。base<T...>
将按照您的期望解开类型和工作。
相关文章:
- 为什么C++构造函数在继承中需要默认参数?
- C++接口继承不同的参数方法
- 如何在继承层次结构中调用具有默认参数的构造函数?
- 模板的继承参数设置
- 使用多参数包可变参数模板继承类
- 使用继承初始化C++中的参数
- 可变参数模板和具有继承的默认值
- 作为模板参数的成员函数指针在继承的成员函数上失败,如何以及为什么?
- 从作为模板参数传递给构造函数的类继承,或者从它们继承
- 在编译时检查未实例化的类模板是否继承自其第一个模板参数
- 继承基构造函数,基类是模板参数 (MSVC)
- C++ 函数的继承,传入参数
- C++ 模板元编程:从模板模板参数继承
- 类成员在继承的情况下用作模板参数
- C++中模板参数的类继承
- 继承专业化的模板参数推导
- 继承类模板的参数化构造函数
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- 具有可变模板的递归继承和继承参数问题
- 函数是否可以继承参数