请考虑以下代码片段
#include <iostream>
#include <functional>
using callback = std::function<double (double, double)>;
double sum (double a, double b) {
return a + b;
}
int main (int argc, char *argv[]) {
// Shouldn't this leave sum() in an invalid state?
auto c = std::move(sum);
std::cout << c(4, 5) << std::endl;
std::cout << sum(4, 5) << std::endl;
return EXIT_SUCCESS;
}我将sum转换为右值引用,将其存储在c中,并调用这两个函数,而不会出现明显的错误行为。为什么会这样呢?std::move不应该让sum处于无效状态吗?
发布于 2019-08-17 18:09:08
将指针移动到函数,而不是函数:
callback c = std::move(sum);在这里,std::move的使用是多余的。
https://stackoverflow.com/questions/57535191
复制相似问题