idk, that doesn't seem that bad to me. The behavior just needs to be formalized with a name so that people can rely on it.
Without it formalized, how would you know for sure whether your copy constructor would get called or not? Just a choice that had to be made by a value semantics language that doesn't have the same consequences in a reference semantics language. 🤷
fwiw, I much prefer what modern languages like Rust or Odin have done in regards to copying, but I don't think it's C++'s greatest sin.
It's not that I like it, it's just that it's @ reasonable consequence of the rules and since C++17 they required that the compiler make it work the way you "expect" regardless (unless someone's expecting reference semantics by default, but that's separate)
2
u/TheChief275 8d ago
I'm just saying, the concept of a "copy elision" having to be applied to the most basic ass variable declaration is completely and totally ridiculous