【发布时间】:2011-04-09 19:31:45
【问题描述】:
当我发现以下代码确实有效时,我感到非常惊讶:
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)的指针。如果这是块的样子,它会起作用(否则不会)。 -
@Bavarious 感谢您的标签编辑!
标签: c++ objective-c++ objective-c-blocks