title: auto fails to deduce?
body: <pre><code>struct test 
  {
    void f() {};
  };
  test t1;
  
  using memfun_t = void (test::*)();
  memfun_t mf = &amp;test::f;
  
  
  auto a1 = &amp;test::f; // OK 
  auto a2 = t1.*mf;  // error 
  auto a3 = &amp;(t1.*mf); // still no luck
  </code></pre>
  
  <p>Any ideas why this can't be deduced? I would appreciate answers referencing the Standard.</p>
  
  <p>Edit :</p>
  
  <p>I have found a RAD Studio language extension called __closure that appears to be addressing this issue.<a href="http://docwiki.embarcadero.com/RADStudio/Seattle/en/Closure" rel="nofollow noreferrer">1</a> Here is the code :</p>
  
  <pre><code>class base {
  public:
      void func(int x) {
      };
  };
  
  typedef void(base::*pBaseMember)(int);
  
  class derived : public base {
  public:
      void new_func(int i) {
      };
  };
  
  int main(int argc, char * argv[]) {
      derived derivedObject;
      void(__closure * derivedClosure)(int);
  
      // Get a pointer to the ‘new_func’ member.
      // Note the closure is associated with the
      // particular object, ‘derivedObject’.
      derivedClosure = derivedObject.new_func;
  
      derivedClosure(3); // Call ‘new_func’ through the closure.
      return 0;
  }
  </code></pre>
  
  <p><a href="http://docwiki.embarcadero.com/RADStudio/Seattle/en/Closure" rel="nofollow noreferrer">http://docwiki.embarcadero.com/RADStudio/Seattle/en/Closure</a></p>