title: Converting this implicitly using an user-defined conversion operator
body: <p>Let's say I have the following code:</p>
  
  <pre><code>class Base
  {
  };
  
  class Foo
  {
  public:
      Foo(Base* base)
      {
      }
  };
  
  class BarBase
  {
  public:
      operator Base*()
      {
          return base;
      }
  
  private:
      Base* base;
  };
  
  class Bar : public BarBase
  {
  public:
      Bar()
      {
          Foo* foo = new Foo(this);
      }
  };
  </code></pre>
  
  <p>The code fails to compile with the following error on GCC 6.3:</p>
  
  <pre><code>prog.cpp: In constructor ‘Bar::Bar()’:
  prog.cpp:30:26: error: no matching function for call to ‘Foo::Foo(Bar*)’
     Foo* foo = new Foo(this);
                            ^
  </code></pre>
  
  <p><code>BarBase</code> that <code>Bar</code> derives from has an user-defined conversion operator for <code>Base*</code>. Why doesn't <code>this</code> get <em>implicitly</em> converted to <code>Base*</code> using the aforementioned conversion operator?</p>