引力计划|C++-万能引用模板与完美转发测试

完美转发,它指的是函数模板可以将自己的参数“完美”地转发给内部调用的其它函数。所谓完美,即不仅能准确地转发参数的值,还能保证被转发参数的左、右值属性不变。
现代C++之万能引用、完美转发、引用折叠(万字长文)
C++11完美转发及实现方法详解
std::forward完美转发
Perfect Forwarding: The Solution
万能引用与完美转发的测试代码

#include using namespace std; //重载被调用函数,查看完美转发的效果 void bar(string & t) { cout << "bar收到参数:string &" << endl; } void bar(const string & t) { cout << "bar收到参数:const string &" << endl; } void bar(string && t) { cout << "bar收到参数:string &&" << endl; } void bar(const string && t) { cout << "bar收到参数:const string &&" << endl; } //万能引用与完美转发函数模板 template void foo(T&& value) { bar(forward(value)); } int main() { //传给foo一个string & string str1; string & str2 = str1; foo(str2); //传给foo一个string foo(str1); //传给foo一个const string const string str3; foo(str3); //传给foo一个const string & const string & str4 = str1; foo(str4); //传给foo一个string && foo(move(str1)); //传给foo一个const string && foo(move(str3)); return 0; }

测试结果 【引力计划|C++-万能引用模板与完美转发测试】引力计划|C++-万能引用模板与完美转发测试
文章图片

    推荐阅读