C++17新特性:使用折叠表达式实现辅助函数

简介

自C++11起,加入了变长模板参数包,能让函数结构任意数量的参数。有时,这些参数都组合成一个表达式,从中得 出函数结果。C++17中使用折叠表达式,可以让这项任务变得更加简单。
首先,实现一个函数,用于将所有参数进行累加:
1.声明该函数:

template  auto sum(Ts ... ts);

2.那么现在我们拥有一个参数包ts ,并且函数必须将参数包展开,然后使用表达式进行求和。如果我们对这些参数进行某个操作(比如:加法),那么为了将这个操作应用于该参数包,就需要使用括号将表达式包围:

template auto sum(Ts ... ts){
return (ts + ...);
}

3.现在我们可以调用这个函数:

int the_sum {sum(1, 2, 3, 4, 5)}; // value: 15

4.这个操作不仅对int 类型起作用,我们能对任何支持加号的类型使用这个函数,比如std::string :

std::string a{"Hello "};
std::string b{"World"};


std::cout << sum(a, b) << '\n'; // output: Hello World

工作流

这里只是简单的对参数集进行简单的递归,然后应用二元操作符&#

你可能感兴趣的:(C++17新特性,c++,开发语言)