title: Why member functions can't be used as template arguments?
body: <p>Why member functions cannot be used as template arguments?
  For example, I want to do like: </p>
  
  <pre><code>struct Foo {
      void Bar() { // do something
      }
  };
  template &lt;typename TOwner, void(&amp;func)()&gt;
  void Call(TOwner *p) {
      p-&gt;func();
  }
  int main() {
      Foo a;
      Call&lt;Foo, Foo::Bar&gt;(&amp;a);
      return 0;
  }
  </code></pre>
  
  <p>I know that a similar thing can be done using pointers-to-member; 
  well, it's cool enough most of the time, but I'm just curious about why pointers "should" be used. </p>
  
  <p>I see no ambiguity of interpreting "p->func()" above. 
  Why the standard prohibits us to use member functions as template arguments?
  Even static member functions are not allowed according to my compiler (VC++ 2013). Does anyone know the reason? Or, is there a way to do the same thing without loss of any performance due to pointer dereferencing?</p>
  
  <p>Thank you. </p>