Hacker News new | past | comments | ask | show | jobs | submit login

So-called "modern C++" (basically C++11 and beyond) is really immensely more pleasurable to work with than C++03/C++98.

The confluence of automatic type deduction, closures, and move semantics turned C++ into the language that it really ought to have always been, given the vision of Alexander Stepanov's STL. I mean really, before lambdas, using the STL was often really clunky.

But even before C++11, the main "killer features" of C++ has always been RAII (deterministic destruction of resources) and compile time duck typing (templates.) These features together have always made C++ an incredibly powerful language that lets you code at a high level of abstraction with zero runtime penalty (at the cost of longer compile times).

Nowadays, C++ can be almost Pythonic in its expressiveness. But I agree that the most urgent problem facing C++ is huge compile-times, which often result from a combinatorial explosion of new types created by templates that instantiate other templates, etc.

Move semantics are so useful and powerful, but so complex. I've read multiple tutorials on them (all of them very long) and I still keep forgetting minor but critical details.

(You could probably replace "move semantics" in that sentence with multiple other C++ features and still have a valid statement.)

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