如何将右值引用从调用方传递给被调用方

时间:2019-03-03 01:09:08

标签: c++11 rvalue-reference

说我下面有代码

#include <iostream>

void foo(std::string && s) { std::cout << s; }

void bar(std::string && s) { foo(s); }

int main() {

  bar("abc");

  return 0;
}

我遇到了编译错误:

  

错误:无法绑定“ std :: string {aka std :: basic_string}”左值   改为“ std :: string && {aka std :: basic_string &&}”   bar(std :: string && s){foo(s); }

1 个答案:

答案 0 :(得分:0)

使用std::move中的<utility>

#include <iostream>
#include <utility>

void foo(std::string && s) { std::cout << s; }

void bar(std::string && s) { foo(std::move(s)); }

int main() {

  bar("abc");

  return 0;
}

std::moveactually just a little bit of syntactical sugar,但这是转发右值引用的常用方法。