title: No legal conversion to 'this' pointer
body: <p>Please take a look at this code and run it:<br>
  I'm getting very strange error:<br>
  Error   1   error C2663: 'Allocator::allocate_help' : 2 overloads have no legal conversion for 'this' pointer  </p>
  
  <pre><code>template&lt;class FailureSignal&gt;
  class Allocator
  {
  private:
      template&lt;class Exception,class Argument&gt;
      void allocate_help(const Argument&amp; arg,Int2Type&lt;true&gt;)
      {
      }
  
      template&lt;class Exception,class Argument&gt;
      std::nullptr_t allocate_help(const Argument&amp; arg,Int2Type&lt;false&gt;)
      {
          return nullptr;
      }
  
  public:
      template&lt;class T&gt;
      void Allocate(signed long int nObjects,T** ptr = 0)const
      {
      allocate_help&lt;std::bad_alloc&gt;(1,Int2Type&lt;true&gt;());  
      }
  
  };
  
  int _tmain(int argc, _TCHAR* argv[])
  {
      Allocator&lt;int&gt; all;
      all.Allocate&lt;int&gt;(1);
      return 0;
  }  
  </code></pre>
  
  <p>I absolutely do not understand this err msg. Hope someone can help me with this. Thank you. </p>