title: Is returning references of member variables bad practice?
body: <p>The following is said to be better than having First() and Second() as public members. I believe this is nearly as bad.</p>
  <pre><code>// Example 17-3(b): Proper encapsulation, initially with inline accessors. Later
  // in life, these might grow into nontrivial functions if needed; if not, then not.
  
  template&lt;class T, class U&gt;
  class Couple {
  public:
    Couple()           : deleted_(false) { }
    void MarkDeleted() { deleted_ = true; }
    bool IsDeleted()   { return deleted_; }
  
  private:
   T first_;
   U second_;
   bool deleted_;
   T&amp; First()         { return first_; }
   U&amp; Second()        { return second_; }
  };
  </code></pre>
  <p>If you're giving a way to access a private variable outside of the class then what's the point? Shouldn't the functions be</p>
  <pre><code>T First(); void(or T) First(const T&amp;)
  </code></pre>