【发布时间】:2013-10-17 09:12:50
【问题描述】:
我试图弄清楚当与闭包结合使用时,std::function 背后发生了什么。我还不能完全理解它,例如:正在调用什么构造函数? 任何人都可以发布一个简单的替换 std::function 的工作示例,它支持以下示例中所需的功能吗?
#include <functional>
int main(int argc, char* argv[])
{
int mybool = 5;
auto foo = [&] (int arg) {
return mybool * arg;
};
std::function<int(int)> foo2 = foo;
int result = foo2(42);
return 0;
}
【问题讨论】:
-
一句话:魔术。不过,这都是纯模板代码,因此您可以自己查看。
-
如果你觉得这很有趣,
std::bind会让你头晕目眩。 -
除了模板之外,还有几个大型 C++ 库是开源的(GCC 通常使用 stdlibc++,clang 通常使用 libc++),因此您甚至可以查看非模板化的代码。
标签: c++ c++11 closures std-function