c++ - 参数包是模板参数吗?

标签 c++ templates variadic-templates terminology

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/

相关文章:

c++ - 是否有比使用欧几里得算法更好的获取gcd的方法

c++ - “Overload” 基于C++98中函数对象operator()签名的函数模板

c++ - 模板中关于引用折叠的右值(&&) 左值(&) 引用绑定(bind)的规则是什么?

c++ - Variadic 模板行为怪异

C++11 "overloaded lambda"带有可变参数模板和变量捕获

c++ - 多态 lambda 的非类型模板参数?

c++ - 我的 Dijkstra 算法实现中的无限循环

c++ - QSerialPort连续读取累计延时

c++ - STL 中的 Binary_search set over set 的成员函数 find?

c++ - 是否可以在没有编译失败的情况下推断类型是否不完整?