MESOS-2757 we introduced T* operator-> for Option, Future and Try. This provided a convenient short-hand for existing member functions T* get providing identical functionality.
To finalize the work of
MESOS-2757 we should replace the existing T* get() member functions with functions T* operator*.
This is desirable as having both operator-> and get in the code base at the same time lures developers into using the old-style get instead of operator-> where it is not needed, e.g.,
We still require the functionality of get to directly access the contained value, but the current API unnecessarily conflates two (at least from a usage perspective) unrelated aspects; in these instances, we should use an operator* instead,
Using operator* in these instances makes it much less likely that users would use it in instances when they wanted to call functions of the wrapped value, i.e.,
appears more natural than
Note that this proposed change is in line with the interface of std::optional. Also, std::shared_ptr's get is a useful function and implements an unrelated interface: it surfaces the wrapped pointer as opposed to its operator* which dereferences the wrapped pointer. Similarly, our current get also produce values, and are unrelated to std::shared_ptr's get.