cppreference中写到一个模板参数包是一个模板参数:
https://en.cppreference.com/w/cpp/language/parameter_pack
这是真的吗?例如,这样写是否正确:
template<typename... Ts>
class MyClass {
std::unique_ptr<Ts...> m_data;
};
最佳答案
是的,参数包是一个有效的模板参数,用于声明。但是当模板被实例化时,它会被替换为实际提供的模板参数列表,参见https://en.cppreference.com/w/cpp/language/template_parameters
例如在你的例子中 MyClass<int>
将包含 std::unique_ptr<int>
, MyClass<int, MyDeleter>
将包含 std::unique_ptr<int, MyDeleter>
和 MyClass<int, MyDeleter, Foo>
将导致编译器错误“模板参数数量错误”,因为 std::unique_ptr
最多可能有两个。
关于c++ - 参数包是模板参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56250581/