title: Nonstatic member as a default argument of a nonstatic member function
body: <pre><code>struct X
  {
     X():mem(42){}
     void f(int param = mem) //ERROR
     {
        //do something
     }
  private: 
     int mem;
  };
  </code></pre>
  
  <p>Can anyone give me just one reason as to why this is illegal in C++?! That is to say, I know that it is an error, I know what the error means, I just can't understand why would this be illegal!</p>