Comment by ChrisSD
7 years ago
C++ classes vs. Rust traits isn't just a matter of syntax differences.
Btw the function syntax is:
fn foo(x: u16, y: u16) -> u32
If it were more C++ like it'd be:
u32 foo(u16 x, u16 y)
Which is less keystrokes if anything.
Amusingly, C++ also supports Rust-style function headers, and has since C++11 (which is well before Rust was ever on the radar; really both C++ and Rust were inspired by ML here). The following two are identical in C++:
IIRC there are contexts where the former does not work and the latter is required, which I believe means that ML-style function headers are strictly more powerful in C++ than the original C-style function headers.
Exactly, they do stuff like fn yet make it longer than necessary otherwise.
I don't think it should be designed to save keystrokes at the cost of readability.
It already does that elsewhere, yet strange backwards type definitions are much less readable by default to most programmers. It's like making us learn French when we could have learned British English, assuming American English as a starting point.
4 replies →
It depends... if your return type is nested inside a class and you're defining a member function, you'll have to write down a qualified return type name before the qualified member function name, whereas if the return type follows the function name, it can be unqualified because at that point the class extends the scope used for name lookup.
http://www.stroustrup.com/C++11FAQ.html#suffix-return
I am not a rust expert, but I assume the recent many programming languages have a keyword for function declaration is so that functions can be first class objects.
This is one of the most trivial points I've ever heard for liking or disliking a programming language.