How is the 'this' pointer used as an argument of a member function
<p>I have this simple class</p>

<pre><code>class foo {
public:
  void func() const;
  void func2();
};

void foo::func() const {}
void foo::func2() {}

int main() {
  const foo f;
  f.func();
  f.func2();
}
</code></pre>

<p>When I attempt to compile I get this message:</p>

<blockquote>
  <p>error: passing ‘const foo’ as ‘this’ argument of ‘void foo::func2()’ discards qualifiers 
  [-fpermissive]</p>
</blockquote>

<p>I understand the use of a non-const member of a const object, my question is how is the 
'this' pointer used as an argument to func2? </p>
