▲ | dig1 4 days ago | ||||||||||||||||
> You have to learn about what the insane move semantics are (and the syntax for move ctors/operators) to do fairly basic things with the language That is simply not true. You can write a lot of C++ code without even touching move stuff. Hell, we've been fine without move semantics for the last 30 years :P > Overloaded operators like operator*() and operator<<() are widely used in the standard library so you're forced to understand what craziness they're doing under the hood Partially true. operator*() is used through the standard library a lot, because it nicely wraps pointer semantics. Still, you don't have to know about implementation details, as they depend on how the standard library implements the underlying containers. AFAIK operator<<() is mainly (ab)used by streams. And you can freely skip that part; many C++ developers find them unnecessarily slow and complex. > Basic standard library datatypes like std::vector use templates, so you're debugging template instantiation issues whether you write your own templated code or not. As long as you keep things simple, errors are going to be simple. The problem with "modern C++" is that people overuse these new features without fully comprehending their pros and cons, simply because they look cool. | |||||||||||||||||
▲ | einpoklum 4 days ago | parent [-] | ||||||||||||||||
> operator<<() ... widely used in the standard library Not that widely. You must be thinking of the IO streams part of the library. Yes, it's rather poor in many respects. But you don't have to use it! We have perfectly nice variadic printing functions these days!
| |||||||||||||||||
|