I used to think this way, then I tried Rust. After C and C++, I never thought I'd want to give up the GC, but to avoid the issues that this article talks about, I wanted to go back to a systems language.
Now I want to use Rust for everything.
I used to think this way, then I tried Rust. After C and C++, I never thought I'd want to give up the GC, but to avoid the issues that this article talks about, I wanted to go back to a systems language.
Now I want to use Rust for everything.
If you're not using new/delete in C++, you're probably not doing something very complicated. (And hey, that's not necessarily a bad thing!)
There are really two classes of C++ features, the basic use part which is fairly straightforward and nice to use. This is the API provided by the STL. Followed by the infrastructure stuff like templates, move semantics, SFINAE and other messy and non-obvious things. This latter part is much more complicated and still a mine field - but necessary for the STL to do what it does.
If you want to learn C++ get proficient in using the STL. The rest should only be learned once that is second nature.
Slight caveat.
> Step 3: Pooling large byte arrays used in serialisation/deserialisation
If you are using a explicit memory language, buffer pooling is still quite important - especially if you are doing any IO. You can avoid this to a certain degree by using fast malloc implementations.
https://internals.rust-lang.org/t/on-native-allocations-poin...
https://github.com/rust-lang/rfcs/blob/bdbe73d1be948dd925c6b...