I think std::optional<Ref<Type>> looks ugly. Also, unlike RefPtr<>, I do not 
think it is copyable. It is pretty neat to be able to capture a RefPtr<> by 
value in a lambda.
Also, how do you convert it to a raw pointer? myOptionalRef.value_or(nullptr) 
would not work. Not sure there would be a nice way to do so.

Finally, the storage space argument from Maciej is a good one.
 
--
 Chris Dumez




> On Sep 1, 2017, at 9:46 AM, Maciej Stachowiak <[email protected]> wrote:
> 
> 
> 
>> On Sep 1, 2017, at 9:30 AM, Brady Eidson <[email protected]> wrote:
>> 
>> I recently worked on a patch where - because of the organic refactoring of 
>> the patch over its development - I ended up with a std::optional<Ref> 
>> instead of a RefPtr.
>> 
>> A followup review after it had already landed pointed this out, and it got 
>> me to thinking:
>> 
>> Does RefPtr do anything for us today that std::optional<Ref> doesn’t?
> 
> The obvious things would be: uses less storage space, has a shorter name.
> 
>> 
>> I kind of like the idea of replacing RefPtr with std::optional<Ref>. It 
>> makes it explicitly clear what object is actually holding the reference, and 
>> completely removes some of the confusion of “when should I use Ref vs 
>> RefPtr?"
>> 
>> Thoughts?
>> 
>> Thanks,
>> ~Brady
>> _______________________________________________
>> webkit-dev mailing list
>> [email protected]
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 
> _______________________________________________
> webkit-dev mailing list
> [email protected]
> https://lists.webkit.org/mailman/listinfo/webkit-dev

_______________________________________________
webkit-dev mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to