C++ 绑定函数导致C++;

C++ 绑定函数导致C++;,c++,c++11,stl,C++,C++11,Stl,在C++11中,有一个std::bind方法将给定的右值或左值引用连接到函数的参数,以在函数调用时传递给定的参数,例如: #include <functional> #include <iostream> int foo(int x, int y) { return x + y; } int main() { std::function<int(void)> f = std::bind(foo, 1, 2); std::cout <

在C++11中,有一个
std::bind
方法将给定的右值或左值引用连接到函数的参数,以在函数调用时传递给定的参数,例如:

#include <functional>
#include <iostream>

int foo(int x, int y) {
   return x + y;
}

int main() {
   std::function<int(void)> f = std::bind(foo, 1, 2);
   std::cout << f() << std::endl;
}
#包括
#包括
intfoo(intx,inty){
返回x+y;
}
int main(){
函数f=std::bind(foo,1,2);
标准::不能使用lambda:

int result;
auto f = [&result](int a, int b){ result = foo(a, b); };
如果要转发任意参数,可以使用可变模板:

auto fvar = [&result](auto... args) {
  result = foo(std::forward<decltype(args)>(args)...);
};
auto-fvar=[&result](自动…参数){
结果=foo(标准::转发(args)…);
};

没有xvalue引用。你是对的,我想简单地说左值或右值引用
auto fvar = [&result](auto... args) {
  result = foo(std::forward<decltype(args)>(args)...);
};