考虑下面的示例,该示例采用msg
并异步发布它。
void sendMessage(std::string msg) {
runAsync<void>([msg = std::move(msg)] {
onPostMessage(cookie, msg.c_str());
});
};
以下内容会更快吗?void sendMessage(std::string&& msg) {
在 call 站点上最好的选择是什么? auto msg = ...
postMessage(msg);
要么 auto msg = ...
postMessage(std::move(msg));
请注意,调用之后不再需要msg
。调用后,编译器会自动检测到我不再使用
msg
并“移动”它吗?
最佳答案
我将使用以下解决方案:
void sendMessage(std::string&& msg) {
runAsync<void>([msg = std::move(msg)] {
onPostMessage(cookie, msg.c_str());
});
};
在主叫站点:auto msg = ...
sendMessage(std::exchange(msg, {}));
关于c++ - 将std::string移入捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63807171/