折叠表达式,从C++17中启用
在模板函数中:
// 定义
template<class ... Targs>decltype(auto) my_add_func(Targs&& ... args)
{
// C++17折叠表达式
// "0 +"避免空参数包错误
return (0 + ... +args);
}
// 使用
auto s = my_add_func(1, 2.1); // 隐式调用
cout << "------------add1: " << s << endl;
s = my_add_func<int, double>(1, 2.1);// 显式调用
cout << "------------add2: " << s << endl;
// 结果一样:均是3.1