I think with optimizations enabled, the get(), operator* and operator-> are likely to be inlined, so they become as fast as raw pointers.
This may be helpful, but it does introduce some overhead, no matter how efficient you try to make it.Well, of the top of my head:
The unique_ptrs and shared_ptrs of Rust are part of the core language, rather than part of the standard library. This means Rust can give some compile-time guarantees about leaks and dangling pointers.
This is a relatively small concern. Plenty of languages have a standard ABI. It doesn't make them great languages.Many of the more eccentric properties of C++ are not present in Rust, for starters, it actually has a standard ABI.
I fail to understand how this is a good thing. How do you modify a variable passed by reference?All variables are immutable by default.
This is a plus, given the ever-shrinking world in which we live.All strings are encoded as UTF8, a minor but delicious property IMO!
I'd consider that a bad thing. No automatic promotion of int to long? No conversion of any pointer to void*? This seems like a recipe for programmer headaches.Better type-safety, there is no implicit casting of built-in types
Never? I realize that using RTTI and dynamic_cast can be a sign of poorly-designed code, but sometimes it is actually necessary, and if there's no mechanism to achieve that, then this language is clearly deficient.you cannot 'downcast' a pointer from a general type to a specific type like in C/C++.
No need to start hurling insults. C++ has gotten much better with the last update (C++11), and promises to improve even more with the next minor update. This is akin to saying "the first automobile was slow, noisy, and inefficient, so let's stop making cars, and make something else."Forgive me, but this smells a bit like something an old and dusty C++ programmer would say. We'd still be using FORTRAN if this was the prevalent frame of mind.
Every system that supports concurrency has the potential for race conditions. It is a rather immutable law of concurrent programming.Errr, if this was true then race conditions wouldn't be a problem would it? Just some good library additions and then that is fixed.
C++ has made progress in this area. They added tons of thread support features in C++11. No language feature or library can completely prevent race conditions. The programmer is still responsible for writing code that behaves as expected.Well concurrency and race conditions are huge problems and they are problems that C++ and other existing systems programming languages have failed to address.