Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It will be interesting to see how the adoption of the syntax for blocks plays out. According to the wikipedia entry for GCD, the proposed C++0x standard has a similar concept, but uses square braces [] instead of the caret ^. The former could be brought down to C, but Objective-C, which is defined as a superset of C, already uses the square braces for object messaging.

Are there any C++ experts who could speak to whether there is any reason that the caret would not work in that language?

(Edit: spelling correction)



The C++0x feature you're referring to is for lamdas (anonymous functions). It might be possible to use another syntax, but it would make parsing (even more of) a nightmare because one can use "&" or "value" inside the square brackets to indicate if values should be pass by-value or by-reference.

In practical terms, I doubt the C++ committee would change the already delayed C++0x standard to accommodate a feature which may (but probably won't) make it into C.


Interesting, thank you.

FWIW, it looks like the concept of a block is also an anonymous function, although it looks as if they only allow passing into them by value, not by reference. The developer documentation at Apple indicates that they also support these within C++, and has a small section on how they behave within it. So, at least, they went the extra mile and worked out the C++ parsing issues.

http://developer.apple.com/mac/articles/cocoa/introblocksgcd...


I just encountered an interesting and relevant quotation from Chis Lattner:

"To head off the obvious question: this syntax and implementation has nothing to do with C++ lambdas. Blocks are designed to work well with C and Objective-C, and unfortunately C++ lambdas really require a language with templates to be very useful. The syntax of blocks and C++ lambdas are completely different, so we expect to eventually support both in the same compiler."

http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/00267...


I believe that Microsoft's Managed C++ uses the caret to indicate a "handle", or managed pointer.


Microsoft would never support GCD. They will invent something similar completely incompatible that makes it difficult to port programs to any other platform.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: