Re:Constructors and evil initializers in C++
by maccard on Friday November 26, 2021 @08:35PM
(#29356300)
That mdthod is what the author is explicitly trying to avoid - having invalid state representabld. Using optional I'd a much better solution
Re:Constructors and evil initializers in C++
by spacechild1 on Friday November 26, 2021 @09:53PM
(#29356856)
In the end there's not much difference between the two. In both cases you essentially call a function/operator to verify the correctness of the object. std::optional doesn't really enforce a check, it only makes it more obvious to the user. On the other hand, returning std::optional means that it will always check the invariant, whether you need it or not, so there is a potential performance penalty. Just something to be aware of.
Anyways, for small classes like this one literally anything is better than implicitly forcing the user to allocate on the heap. The author should have pointed out the massive drawbacks of this approach.