Benjamin Mahler created MESOS-2716:
--------------------------------------

             Summary: 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


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