> On Dec 17, 2018, at 10:27 AM, Alex Christensen <achristen...@apple.com> wrote: > >>>>> On Dec 14, 2018, at 1:37 PM, Chris Dumez <cdu...@apple.com >>>>> <mailto:cdu...@apple.com>> wrote: >>>> >>>>> >>>>> As far as I know, our convention in WebKit so far for our types has been >>>>> that types getting moved-out are left in a valid “empty” state. > This is not necessarily true. When we move out of an object to pass into a > function parameter, for example, the state of the moved-from object depends > on the behavior of the callee. If the callee function uses the object, we > often have behavior that leaves the object in an “empty” state of some kind, > but we are definitely relying on fragile undefined behavior when we do so > because changing the callee to not use the parameter changes the state of the > caller. We should never assume that WTFMove or std::move leaves the object > in an empty state. That is always a bug that needs to be replaced by > std::exchange.
Feel like we’re taking about different things. I am talking about move constructors (and assignment operators), which have a well defined behavior in WebKit. And it seems you are talking about WTFMove(), which despite the name does not “move” anything, it is merely a cast. In the case you’re talking about the caller does NOT call the move constructor, it merely does a cast so I do not think your comment invalidates my statement. Note that in my patch, I was nearly WTFMove()ing the data member and assigning it to a local variable right away, calling the move constructor.
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev