73得票1回答
How std::function works

你知道吗,我们可以将一个lambda函数封装或存储到一个std::function中: #include <iostream> #include <functional> int main() { std::function<float (float, ...

66得票9回答
C++中的函数式编程。实现f(a)(b)(c)。

我一直在学习C++的函数式编程基础。我正在尝试创建一个函数f(a)(b)(c),它将返回a + b + c。我已经成功实现了函数f(a)(b),它返回a + b。这是它的代码:std::function<double(double)> plus2(double a){ re...

58得票6回答
比较std::functions的相等性?

如何使用operator==比较两个C++11中的std::function,并在两个function都指向同一函数指针时返回true?

43得票5回答
std::function无法区分重载函数

我在尝试理解为什么 std::function 不能区分重载函数。 #include <functional> void add(int,int){} class A {}; void add (A, A){} int main(){ std::funct...

43得票2回答
Lambda的Lambda:该函数未被捕获。

以下程序无法编译:#include <iostream> #include <vector> #include <functional> #include <algorithm> #include <cstdlib> #include...

43得票4回答
std::function的模板参数(也就是签名)不是它的类型的一部分吗?

考虑以下代码,导致歧义的原因是什么?我能否规避它或者必须保留(烦人的)显式转换?#include <functional> using namespace std; int a(const function<int ()>& f) { return ...

42得票4回答
在lambda中,你应该通过引用还是使用[this]来捕获数据成员?

如果我需要生成一个调用成员函数的lambda表达式,我应该使用引用捕获还是捕获this指针?我的理解是,&符号只捕获使用的成员,而this指针捕获所有数据成员。使用&符号更好吗? class MyClass { public: int mFunc() { // acc...

37得票1回答
一个 std::function 能够存储数据成员的指针吗?

我从cppreference得知: 类模板std::function是一个通用的多态函数包装器。std::function的实例可以存储、复制和调用任何可调用目标,如函数、lambda表达式、绑定表达式或其他函数对象,以及成员函数指针和数据成员指针。 我不明白为什么std::fun...

35得票6回答
如何在Visual Studio 11中直接将成员函数绑定到std :: function?

我可以通过使用一个捕获列表来包装成一个lambda表达式,轻松地将成员函数绑定到std::function上。class Class { Class() { Register([=](int n){ Function(n); }); } voi...

34得票3回答
C++11的lambda表达式是如何表示和传递的?

在C++11中,传递Lambda表达式非常简单:func( []( int arg ) { // code } ) ; 不过我在想,将lambda表达式传递给像这样的函数的成本是多少?如果func将lambda表达式传递给其他函数会怎样?void func( function< vo...