说我下面有代码
#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); }
答案 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::move
是actually just a little bit of syntactical sugar,但这是转发右值引用的常用方法。