当前位置:网站首页>可变参表达式

可变参表达式

2022-06-11 13:25:00 发如雪-ty

有如下的一个模板函数

template<typename...T>
auto print_result(T... args)
{
    
	(cout << ... << args) << "结束" << endl;
	return (... + args);
}

int main()
{
    
	cout << print_result(10, 20, 30, 40) << endl;
	system("pause");
	return 0;
}

结果:
在这里插入图片描述
现在有这样一个需求,希望每个参数的值都扩大原来的2倍,然后再进行彼此间的加法运算。要解决这个问题,比较好的方式是引入一个中间的函数模板,如下:

template<typename...T>
auto print_calc(T... args)
{
    
	return print_result(2 * args ...);
}

上面的范例中2args…这个写法,其实就是可变参表达式,等价于print_result(210,220,230,2*40);

int main()
{
    
	cout << print_result(10, 20, 30, 40) << endl;
	cout << print_calc(10, 20, 30, 40) << endl;
	system("pause");
	return 0;
}

结果:
在这里插入图片描述

原网站

版权声明
本文为[发如雪-ty]所创,转载请带上原文链接,感谢
https://blog.csdn.net/FairLikeSnow/article/details/125229894