2.3 forward和完美转发 您所在的位置:网站首页 forward函数的作用 2.3 forward和完美转发

2.3 forward和完美转发

#2.3 forward和完美转发| 来源: 网络整理| 查看: 265

在2.2节中介绍的右值引用类型是独立于值的,一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值了,并不是它原来的类型了。比如:

template void forwardValue(T& val) { processValue(val); // 右值参数会变成左值 } template void forwardValue(const T& val) { processValue(val); // 参数都变成常量左值引用了 }

都不能按照参数的本来的类型进行转发。

因此,我们需要一种方法能按照参数原来的类型转发到另一个函数,这种转发被称为完美转发。所谓完美转发(Perfect Forwarding),是指在函数模板中,完全依照模板的参数的类型(即保持参数的左值、右值特征),将参数传递给函数模板中调用的另外一个函数。C++11中提供了这样的一个函数std::forward,它是为转发而生的,不管参数是T&&这种未定的引用还是明确的左值引用或者右值引用,它会按照参数本来的类型转发。看看这个例子:

代码清单2-4 参数转发的示例

template void PrintT(T& t) { cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有