free login william hill mobile vegas_Welfare offer Football basketball betting_free login german lotto results betfred

Sun, 16 Dec 2018 15:50:46 -0800


> On Dec 14, 2018, at 3:52 PM, Chris Dumez <cdu...@apple.com 
> <mailto:cdu...@apple.com>> wrote:
> 
> So to be clear, it is often not truly about using the value after it is 
> moved. It is about expecting that the variable / member has been nulled out 
> after moving it.
> If I WTFMove() out a data member m_dataMember, I expect later on `if 
> (m_dataMember)` to be false.
> 

I do not mean to derail the discussion about whether or not we should have our 
own std::optional that disengages on move. I am all for convenience. I think 
expecting a valid ¡°empty¡± state (*) when moving out a data member is an 
anti-pattern and I propose that we should be using std::exchange() instead (or 
any code analogous to doing std::exchange()) for these cases, including the 
case in your original email and especially with data members as in 
<https://trac.webkit.org/changeset/239228 
<https://trac.webkit.org/changeset/239228>>.

Why do I consider it an anti-pattern? See (*) and because the concept of 
¡°moving" is not spec'ed to behave like this. Here¡¯s one reference to the 
spec¡¯ed behavior and an example comparable to the one in your first email 
(highlighting is my own for emphasis):

[[
Unless otherwise specified, all standard library objects that have been moved 
from are placed in a valid but unspecified state. That is, only the functions 
without preconditions, such as the assignment operator, can be safely used on 
the object after it was moved from:
std::vector <http://en.cppreference.com/w/cpp/container/vector><std::string 
<http://en.cppreference.com/w/cpp/string/basic_string>> v;
std::string <http://en.cppreference.com/w/cpp/string/basic_string> str = 
"example";
v.push_back(std::move(str)); // str is now valid but unspecified
str.back(); // undefined behavior if size() == 0: back() has a precondition 
!empty()
str.clear(); // OK, clear() has no preconditions

]]
<https://en.cppreference.com/w/cpp/utility/move 
<https://en.cppreference.com/w/cpp/utility/move>>

(*) What is the valid ¡°empty¡± state for a type without a default constructor?

Dan

> --
> ? Chris Dumez
> 
> 
> 
> 
>> On Dec 14, 2018, at 3:45 PM, Chris Dumez <cdu...@apple.com 
>> <mailto:cdu...@apple.com>> wrote:
>> 
>> 
>>> On Dec 14, 2018, at 3:39 PM, Fujii Hironori <fujii.hiron...@gmail.com 
>>> <mailto:fujii.hiron...@gmail.com>> wrote:
>>> 
>>> 
>>> On Sat, Dec 15, 2018 at 6:38 AM Chris Dumez <cdu...@apple.com 
>>> <mailto:cdu...@apple.com>> wrote:
>>> 
>>> I have now been caught twice by std::optional¡¯s move constructor. 
>>> 
>>>  I don't understand how this could be useful? Do you want to use the value 
>>> after it is moved? I'd like to see these your code. Could you show me these 
>>> two patches?
>> 
>> This is the latest one: free online bettinghttps://trac.webkit.org/changeset/239228/webkit 
>> <https://trac.webkit.org/changeset/239228/webkit>
>> 
>> 
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev@lists.webkit.org <mailto:webkit-dev@lists.webkit.org>
>> https://lists.webkit.org/mailman/listinfo/webkit-dev 
>> <https://lists.webkit.org/mailman/listinfo/webkit-dev>
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@lists.webkit.org <mailto:webkit-dev@lists.webkit.org>
> https://lists.webkit.org/mailman/listinfo/webkit-dev 
> <https://lists.webkit.org/mailman/listinfo/webkit-dev>
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to