Copy Constructor DIP
FeepingCreature
feepingcreature at gmail.com
Tue Jul 10 14:28:09 UTC 2018
On Tuesday, 10 July 2018 at 13:38:33 UTC, Jonathan M Davis wrote:
> He thought that it was critical that the invariant be valid
> when opAssign was called - and there are cases where that's
> arguably true - but since it doesn't work once you try to do
> fancier stuff like emplace, I'm of the opinion that invariants
> are unfortunately a waste of time - even without getting into
> the issue of init values.
>
> - Jonathan M Davis
moveEmplace bypasses opAssign, since it memcopies directly.
However, it resets its source value to T.init... so if T.init
isn't valid, you simply crash whenever the source value goes out
of scope.
Using types with an invalid T.init feels like playing musical
chairs with a crash. You can shuffle things around, and make some
parts work, but *something* is always left crashing at the end.
More information about the Digitalmars-d
mailing list