[webkit-dev] Watch out for std::optional's move constructor
cdumez at apple.com
Sun Dec 16 20:37:51 PST 2018
> On Dec 16, 2018, at 7:43 PM, Fujii Hironori <fujii.hironori at gmail.com> wrote:
> I don't like the proposal because it encourages misuse of move.
> We can use move only for values about to be destroyed.
Just for reference, there are close to 400 matches for "WTFMove(m_” in our code base. People do seem to rely on the state of objects after being moved out.
I totally agree that the state of the object being moved out is not defined by the C++ standard. However, so far, in WebKit, we’ve been careful with our move-constructors.
I think that if we do not update std::optional’s move constructor, then I worry we’ll keep having to fix bugs in the future due to its misuse. Although, maybe this mail thread will help.
That being said, I agree with your and Daniel and we should use std::exchange more. I think all the "WTFMove(m_” lines in our code bases should probably be replaced with std::exchange.
> I like Dan's suggestion. We should use std::exchange or std::optional::swap for the cases.
> Or, what about adding a new method WTF::Optional::release() for the case?
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
More information about the webkit-dev