【发布时间】:2012-07-25 00:56:37
【问题描述】:
所以,我刚刚升级到 Xcode 4.4,我在更新日志中注意到:
Apple LLVM 编译器支持其他 C++11 功能,包括 lambdas
这太棒了!所以我开始编码,我发现了一些东西:
-
Lambda 可分配给 Objective-C 块:
void (^block)() = []() -> void { NSLog(@"Inside Lambda called as block!"); }; block(); -
std::function可以容纳一个 Objective-C 块:std::function<void(void)> func = ^{ NSLog(@"Block inside std::function"); }; func(); -
我们不能将 Objective-C 块分配给 lambda:
auto lambda = []() -> { NSLog(@"Lambda!"); }; lambda = ^{ // error! NSLog(@"Block!"); }; lambda();
这是为什么?鉴于我们在上面看到的,这两者在语义上不应该是等价的吗?
【问题讨论】:
-
+1 好消息,好问题 - 迫不及待想看到更多关于这个主题的信息。
标签: c++ objective-c lambda c++11 objective-c++