title: C++ unable to remove constant of an object iin recursive
body: <p>I have the below function</p>
  
  <pre><code>class p{
  public :
  string const&amp; PrintData() const
  {
      cout &lt;&lt; "const" &lt;&lt; str;
      const_cast&lt;ConstFunctions *&gt;(this);
      PrintData();
      return str;
  }
  string const&amp; PrintData()
  {
      cout &lt;&lt; "non-const" &lt;&lt; endl;
      return str;
  }
  private :
  string str="Hello";
  }
  
  int main()
  {
  const p p1;
  p1.PrintData();
  }
  </code></pre>
  
  <p>I am expecting the below ::</p>
  
  <p>constHello
  non-constHello</p>
  
  <p>Because i have removed the constantness of the object </p>
  
  <p>But i am getting in to infinite recursive loop</p>