Ich war ziemlich überrascht, als ich feststellte, dass der folgende Code tatsächlich funktioniert:
std::vector<int> list /*= ...*/;
std::tr1::function<void(int)> func = ^(int i) {
return i + 1;
};
std::for_each(list.begin(), list.end(), func);
Sieht aus wie std::tr1::function
ist in der Lage, aus einem Objective-C-Block konstruiert zu werden, aber ich bin mir nicht ganz sicher, wie, da (zuletzt ich überprüft), seine Implementierung nicht speziell Blöcke behandeln. Ist es irgendwie implizit saugen die zugrunde liegende Funktion Zeiger aus? Ist dieses Verhalten außerdem undefiniert und wird es sich wahrscheinlich ändern?