网站建设pc指什么,济南网站seo优化,化妆品网站建设公司,互动广告机网站建设原文 C11里面就引入了完美转发概念,通过它,可按参数实际类型转发参数.
元型名 T空 处理(Tt){输出左值\n;}
元型名 T空 处理(Tt){输出右值\n;}
元型名 T空 测试转发(Tt){处理(前向11里面就引入了完美转发概念,通过它,可按参数实际类型转发参数.
元型名 T空 处理(Tt){输出左值\n;}
元型名 T空 处理(Tt){输出右值\n;}
元型名 T空 测试转发(Tt){处理(前向T(t));}
整 主(){整 i0;测试转发(i);测试转发(0);
}
//打印
左值
右值传入左值i时,Tt就是个左值引用,传入右值0时,Tt就是个右值引用,再通过前向(t)完美转发参数到处理函数,处理函数输出结果符合期望.
但是在λ中,如何实现完美转发呢?
元型名 T空 测试捕捉(Tt){动 λ[参]()可变{处理(参);};λ();
}
元型名 T空 测试捕捉1(Tt){动 λ[参]()可变{处理(参);};λ();
}
测试捕捉(i);
测试捕捉(0);
//打印
左值
左值λ无论是按值捕捉还是按引用捕捉,到调用处理时都是一个左值了,只会进入左值引用那个处理函数. C20中支持完美抓(完美抓捕)的特性,和完美转发类似,可根据实际参数类型实现抓.
元型名 T空 测试捕捉(Tt){动 λ[参前向T(t)]()可变{处理(前向T(参));};λ();
}有了该转发λ捕捉,就得到了实际类型参数,接着通过完美转发调用处理就可得到符合期望结果了. 如果是可变模板参数,该怎么完美捕捉呢?
元型名...T空 测试捕捉20(T...t){动 λ[...参前向T(t)]()可变{处理(前向T(参)...);};λ();
}在C17里能不能实现完美捕捉呢?也是可以的.
元型名...O动 测试捕捉17(O...o){中[o造元组(前向O(o)...)]()可变{中 应用([](动...o){处理(前向O(o)...);},o);}();
}