我很驚訝,當我發現下面的代碼實際工作:爲什麼std :: tr1 :: function與Objective-C塊一起工作?
std::vector<int> list /*= ...*/;
std::tr1::function<void(int)> func = ^(int i) {
return i + 1;
};
std::for_each(list.begin(), list.end(), func);
好像std::tr1::function
能夠從一個Objective-C座正在建造的,但我不知道怎麼挺,自(去年我檢查),它的實現並不特別處理塊。它以某種方式隱含地吸出基礎函數指針?此外,這種行爲未定,可能會改變?
從C++的角度來看,你的std :: function包含一個指向任何看起來像'void f(int)'的指針。如果這是塊看起來像,它會起作用(否則)。 – 2011-04-10 10:53:02
@Bavarious感謝您的標籤編輯! – 2011-09-17 03:52:11