title: Templated method pointer - can't match pointer for function argument
body: <p>I am making a method pointer wrapper like this:</p>
  
  <pre><code>template&lt;typename OBJECT, typename... ARGS&gt;
  method_wrapper&lt;ARGS...&gt; _getWrapper(OBJECT* object, void (OBJECT::*method)(ARGS...))
  {
      //irrelevant
  }
  </code></pre>
  
  <p>The problem is right at the calling of <code>_getWrapper</code>:</p>
  
  <pre><code>class TestClass
  {
  
      void TestMethod(int a, float b, bool c)
      {
          std::cout&lt;&lt;a&lt;&lt;std::endl;
          std::cout&lt;&lt;b&lt;&lt;std::endl;
          std::cout&lt;&lt;c&lt;&lt;std::endl;
      }
  };
  
  int main()
  {
  TestClass testObj;
  
  method_wrapper&lt;int, float, bool&gt; wrap = _getWrapper&lt;int, float, bool&gt;(&amp;testObj, TestClass::TestMethod);
  
  wrap.callInternal(1000, 3.14, true);
  
  //...
  
  system("pause");
  
  return 0;
  }
  </code></pre>
  
  <p>Not matter in what way I try to pass the arguments in _getWrapper, it still tells me: </p>
  
  <blockquote>
    <p>no instance of overloaded function matches the argument list</p>
  </blockquote>
  
  <p>Doesn't <code>OBJECT::*method</code> match <code>TestClass::TestMethod</code> directly? I also tried <code>&amp;TestClass::TestMethod</code>, doesn't match either.</p>