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使用),因此您甚至可以查看非模板化代碼。 –