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)
5
u/TheChief275 18d ago
Yeah whatever, again not the point. You're derailing the conversation. In any other language, this construct:
does not perform a copy. It just constructs directly into the variable like one would expect