我在阅读一些文档时看到:
template<class Ret, class... Args>
struct is_function<Ret(Args...) &&> : std::true_type {};
引用自:
http://en.cppreference.com/w/cpp/types/is_function
如何获得对函数的右值引用?
据我所知,函数没有存储生存期。有人能解释一下吗?我理解引用和指针,但如何“移动”函数?
我编写了这段代码,它按照应该的方式编译和运行:
#include <iostream>
using namespace std;
int foo(int num) {
return num + 1;
}
int main() {
int (*bar1)(int) = &foo;
cout << bar1(1) << endl;
int (&bar2)(int) = foo;
cout << bar2(2) << endl;
auto bar3 = std::move(bar2); // ????
cout << bar3(3) << endl;
cout << bar2(2) << endl;
int (&&bar4)(int) = foo; // ????
cout << bar4(4) << endl;
}
让我们假设您是否可以将函数作为字节码/操作码存储在内存中,并将其“移动”。CPU不会阻止它运行吗?
编辑:@NicolasBolas纠正了我的误解,但下面是我另一个“问题”的答案:
rvalue reference to function