基本上,我想知道如果像下面的東西是可能的?如果這是不可能的,有什麼辦法可以僞造它?有沒有辦法在不在當前範圍內的lambda中使用變量?
#include <iostream>
using namespace std;
template<typename Functor>
void foo(Functor func)
{
auto test = [](Functor f){ int i = 5; f(); };
test(func);
}
int main()
{
foo([](){ cout << i << endl;});
}
爲什麼不讓'i'成爲一個參數? – kennytm 2010-09-10 17:31:32
要麼讓我參數或我想找一個編譯器,會做一些動態範圍界定? – SubSevn 2010-09-10 17:33:51
@KennyTM:我正在編寫一個生成C++的小型編譯器。我想用這樣的東西來創建'let'語句。 – Ryan 2010-09-10 17:34:58