当我发现以下代码实际上可以工作时,我感到非常惊讶:
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块构造,但我不确定具体如何,因为(据我所知),它的实现没有专门处理块。它是否在隐含地提取基础函数指针?此外,这种行为是否未定义且有可能发生更改?
void f(int)
的东西的指针。如果这就是块的样子,它就可以工作(否则不行)。 - Bo Persson