title: How to allow a member function that's defined inside the class declaration to be called by constant objects of said class
body: <p>I have a <code>Book</code> class within a namespace literature and the following declaration implementation pair doesn't work:</p>
  
  <pre><code>namespace literature
  {
      class Book{
      public:
          //Getter method
          Condition check(){return status;} const
  
          bool operator==(const Book&amp;);
          bool operator!=(const Book&amp;);
      }
  }
  </code></pre>
  
  <p>The logical overload's declaration:</p>
  
  <pre><code>namespace literature{
      bool Book::operator==(const Book&amp; right)
      {return true;}
  
      bool Book::operator!=(const Book&amp; right)
      {return false;}
  }
  </code></pre>
  
  <p>For some reason, the implementation for operator <code>!=</code> works while the one for <code>==</code> doesn't and instead states that the prototype for the <code>==</code> overload returns a <code>const bool</code> instead of <code>bool</code></p>