网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C++的std::forward怎么使用

本篇内容主要讲解“C++的std::forward怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++的std::forward怎么使用”吧!

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发公司、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了济阳免费建站欢迎大家使用!

对于只传递不处理的参数,使用模板类型TP&&并在传递时使用std::forward

Reason(原因)

If the object is to be passed onward to other code and not directly used by this function, we want to make this function agnostic to the argument const-ness and rvalue-ness.

如果对象不在本函数内部使用而是继续传递给其他代码,我们希望本函数不会改变参数的常数特性和右值特性。

译者注:

考虑下面的函数:

string f(string&& s){    if(s.size())        s[0]=toupper(s[0]);    return s}

右值引用作为参数类型使用的时候,首先被实参初始化,其结果是实参将无效化(右值引用的定义)。在函数内部,由于s已经夺取了实参的内容,因此可以作为左值自由使用。但是如果不是在函数体中直接使用而希望作为右值继续传递给另外一个函数,就不能直接使用s作为实参(因为它已经变成了左值引用),而是使用forward恢复它的右值特性。

在这种情况下,也只有在这种(右值引用参数只传递不使用)情况下,将TP参数定义为TP&&(这里TP是模板类型)--这样可以无视并维持常量特性和右值特性。因此任何使用TP&&的代码声明了它不在乎变量的常量特性和右值特性(因为已经被忽略),但会将该值(不加改变地)继续传递给其他不在乎常量特性和右值特性的代码(因为这些特性会被维持)。因为任何从调用者传来的临时对象都会在函数调用期间保持有效性(原因是调用者只有在函数调用之后才有机会销毁这个对象),因此当TP&&被作为参数(在函数内部)使用时是安全的。TP&&类型的参数本质上总是应该在函数体中通过std::forward继续传递的。

译者注:最终还是要被某段代码作为左值使用的。

Example
template inline auto invoke(F f, Args&&... args) {    return f(forward(args)...);}

到此,相信大家对“C++的std::forward怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站名称:C++的std::forward怎么使用
网页链接:http://bjjierui.cn/article/gedded.html

其他资讯