简介
本文介绍如何将省略号 (… 与 c + + 可变参数模板) 。 省略号在 C 和 c + + 中具有许多用途。 其中包括函数的变量参数列表。 printf()C 运行时库中的函数是一个最常见的示例。
可变参数模板 是支持任意数量的参数的类或函数模板。 此机制对 c + + 库开发人员特别有用,因为您可以将其应用于类模板和函数模板,从而提供各种类型安全且不重要的功能和灵活性。
语法
可变参数模板通过两种方式使用省略号。 参数名称的左侧表示 参数包,参数名称的右侧将参数包扩展为多个单独的名称。
下面是 可变参数模板类 定义语法的基本示例:
template<typename... Arguments> class classname;
对于参数包和扩展,您可根据您的偏好在省略号周围添加空白,如以下这些示例所示:
template<typename ...Arguments> class classname;
或者这个:
template<typename ... Arguments> class classname;
请注意,本文使用第一个示例中显示的约定, (省略号附加到 typename) 。
在前面的示例中, 参数 是参数包。 类 classname 可以接受数量可变的自变量,如以下示例中所示:
template<typename... Arguments> class vtclass;
vtclass< > vtinstance1;
vtclass<int> vtinstance2;
vtclass<float, bool> vtinstance3;
vtclass<long, std::vector<int>, std::string> vtinstance4;
使用可变参数模板类定义时,还可以至少要求一个参数:
template <typename First