通过传递多个参数是否::std::initializer_list比可变参数函数模板方法有任何优势?
在代码中:
template <typename T> void f(::std::initializer_list<T> const);
template <typename ...A> void f(A&& ...args);
Run Code Online (Sandbox Code Playgroud)
请注意,A...也可以通过 SFINAE 或将类型限制为单一类型static_assert()。参数可以通过......
std::initializer_list您可以以无法遍历参数包的方式迭代 an (除非您有 C++17 并且首先折叠它)。例如,您可以for使用列表进行循环。对于参数包,您扩展它们的唯一选择是通过递归专门定义。