[ 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)