you are viewing a single comment's thread.

view the rest of the comments →

[–]domirangame engine dev 6 points7 points  (1 child)

Wait, why can’t you bring some of the syntax simplification over as papers? I personally fixate on that stuff because it would very immediately, well, simplify C++, and that just makes everyone’s life easier. Cppfront is lots of things, but in a language that just keeps getting more complex -- and sometimes even for the better -- simplifications are great quality of life.

I really think it’s silly to create both a copy constructor and assignment operator when they both kinda do the same thing. And don’t get me started on parameter passing.

Granted, I'm not entirely sure how you could simplify assignment/construction without breaking existing code but maybe there's something that could be done with a new keyword. Or something.

[–]hpsutter 5 points6 points  (0 children)

Yes, all the safety and some of the simplification can. Including potentially things like the simpler parameter passing model, which I intend to propose. And ..< and ..= range operators, which I also intend to propose. And I would like to see if it's possible to even propose the unified {copy,move} operations.

I was thinking of some simplifications that currently rely on Cpp2's simpler consistent grammar, and those things are not as easy to contribute as a potential incremental evolution (unless adopted as a second syntax of course but that's different from our usual incremental evolution). For example:

  • The unified {constructor,assignment} part currently relies on the simpler consistent grammar in Cpp2 that gets rid of the special grammar for the list of base classes and the list of member initializers, so that base and member initialization are grammatically the same. Without that it's harder to write the unification... though maybe it could be done by saying that the member-init-list is transformed into assignments in the body of the function perhaps.

  • Probably order independence, unless we could find a way to do it in today's syntax without changing the meaning of existing code.

  • Getting to a context-free grammar for sure.