gpt4 book ai didi

c++ - 将函数标识符作为右值引用传递并对其应用 std::move()

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:25 25 4
gpt4 key购买 nike

考虑以下片段

#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 处于无效状态吗?

最佳答案

您将指针移动到函数,而不是函数:

callback c = std::move(sum);

std::move 的使用在这里是多余的。

关于c++ - 将函数标识符作为右值引用传递并对其应用 std::move(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57535191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com