代码拉取完成,页面将自动刷新
同步操作将从 四月是你的谎言/深入应用C++11:代码优化与工程级应用 的实践代码 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
// 可变参数模板和普通模板的语义时一样的,指示写法上稍微有区别,声明可变参数模板时需要在 typename 或 class 后面带上省略号
#include <initializer_list>
#include <iostream>
#include <tuple>
using namespace std;
//可变参数模板函数
//1. 使用递归函数方式展开参数包
//2. 使用逗号表达式和初始化列表方式展开参数包
//逗号表达式:
//var = (count=19, incr=10, count+1); 首先把 count 赋值为 19,把 incr 赋值为 10,然后把 count 加 1,最后,把最右边表达式 count+1 的计算结果 20 赋给 var。上面表达式中的括号是必需的,因为逗号运算符的优先级低于赋值操作符。
//逐步计算,得到最后一个值
template<class T>
void printarg(T t)
{
cout << t << endl;
}
template<typename... Args>
void expand(Args... args)
{
std::initializer_list<int>{(printarg(args), 0)...}; //逗号表达式
}
//可变参数模板类
template<typename... Args> struct Sum;
template<typename First, typename... Rest>
struct Sum<First, Rest...>
{
enum { value = Sum<First>::value + Sum<Rest...>::value };
};
template<typename Last>
struct Sum<Last>
{
enum {value = sizeof(Last)};
};
int main(void)
{
expand(1, 2, 3, 4);
std::tuple<int> tp1 = std::make_tuple(1);
std::tuple<int, double> tp2 = std::make_tuple(1, 2.5);
std::tuple<int, double ,string> tp3 = std::make_tuple(1, 2.5, "");
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。