> One of the big problems of value types in C++ is that you have to be a language lawyer to not accidentally make wasteful copies of everything...
Not always. The C++ standard has allowed copy elision for some time [1]. Guaranteed copy elision for certain forms of copy has been proposed for C++17 [2].
Not always. The C++ standard has allowed copy elision for some time [1]. Guaranteed copy elision for certain forms of copy has been proposed for C++17 [2].
[1] http://en.cppreference.com/w/cpp/language/copy_elision
[2] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p013...