6
我想弄清楚std :: function在与闭包结合使用时会发生什么。我现在还不能将自己的头包裹起来,例如:正在调用哪个构造函数? 任何人都可以发布一个minimalistic drop的工作示例来替换支持以下示例中所需功能的std :: function:c + +闭包和std ::功能
#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'](http://en.cppreference.com/w/cpp/utility/functional/bind)会让你感到头晕目眩。 – WhozCraig
除了模板之外,还有几个大型的C++库,它们是开源的(stdlibC++通常由GCC使用,而libC++通常由clang使用),因此您甚至可以查看非模板化代码。 –