[ 
https://issues.apache.org/jira/browse/MESOS-2716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14560479#comment-14560479
 ] 

Mark Wang commented on MESOS-2716:
----------------------------------

I see line 106 with this same functionality as getOrElse(), shall we just 
rename it?
{noformat}  // This must return a copy to avoid returning a reference to a 
temporary.
  T get(const T& _t) const { return isNone() ? _t : t; }{noformat}

> Add non-const reference version of Option<T>::get.
> --------------------------------------------------
>
>                 Key: MESOS-2716
>                 URL: https://issues.apache.org/jira/browse/MESOS-2716
>             Project: Mesos
>          Issue Type: Improvement
>          Components: stout
>            Reporter: Benjamin Mahler
>            Assignee: Mark Wang
>              Labels: newbie
>
> Currently Option only provides a const reference to the underlying object:
> {code}
> template <typename T>
> class Option
> {
>   ...
>   const T& get() const;
>   ...
> };
> {code}
> Since we use Option as a replacement for NULL, we often have optional 
> variables that we need to perform non-const operations on. However, this 
> requires taking a copy:
> {code}
>     static void cleanup(const Response& response)
>     {
>       if (response.type == Response::PIPE) {
>         CHECK_SOME(response.reader);
>         http::Pipe::Reader reader = response.reader.get(); // Remove const.
>         reader.close();
>       }
>     }
> {code}
> Taking a copy is hacky, but works for shared objects and some other copyable 
> objects. Since Option represents a mutable variable, it makes sense to add 
> non-const reference access to the underlying value:
> {code}
> template <typename T>
> class Option
> {
>   ...
>   const T& get() const;
>   T& get();
>   ...
> };
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to