c++11 - 如何将右值引用从调用者传递给被调用者
问题描述
说我有下面的代码
#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&&}' void bar(std::string && s) { foo(s); }
解决方案
使用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
实际上只是一点点语法糖,但却是转发右值引用的常用方式。
推荐阅读
- contentful - Contentful Management API 上传图片
- javascript - 使用 parseInt 函数需要指南
- raspberry-pi3 - 当我在 RaspBerry pi 中安装 Bazel 时出错
- android - 如何更改 listView 的一项的颜色背景
- javascript - React Leaflet:FlyToBounds 以编程方式更改道具
- angular - Firebase 以某种方式部署旧版本(角度 6)
- android - FileNotFoundException:/storage/sdcard0/Myfile.txt:打开失败:EACCES(权限被拒绝)
- css - 尝试将位置固定添加到导航
- java - 在 intellij 中构建失败
- c - 仅使用 gl.h 和 glu.h 编程 OpenGL