title: How do I call overloaded member function with cv-qualifier?
body: <p>I have been reading through the C++ standard and from there I found out that the cv-qualifiers are part of the function signature for member functions.</p>
  
  <p>Consider the case below:</p>
  
  <pre><code>/******************************
  * Function signature testing
  *******************************/
  class Signature
  {   
  public:
      void vSignature( void )
      {
          cout &lt;&lt; "signature" &lt;&lt; endl;        
      }
  
      void vSignature( void ) const 
      {
          cout &lt;&lt; "constant signature" &lt;&lt; endl;
      }
  };
  
  typedef void (Signature::*constFunc)( void ) const ;
  int main(void)
  {
      constFunc f = &amp;Signature::vSignature;
      Signature s;
      s.vSignature();  //outputs 'signature'
      (s.*f)();        // outputs 'constant signature'
      return 0;
  }
  </code></pre>
  
  <p>In the above code, when I call vSignature in the 'ordinary' way, the non-const overload gets called. In order to 'force' the const overload to be used, I have to obtain the pointer to the vSignature function and cast it to the const overload.</p>
  
  <p>Is there any other way to call the vSignature() const overload aside from the above?</p>