// P0846R0 // { dg-do compile } // { dg-options "-std=c++2a" } struct A { template int foo (T a, T b) { return a + b; } }; int bar (A* pa, int (A::*pm)(int, int)) { return (pa->*pm)(1, 2); } int baz (A pa, int (A::*pm)(int, int)) { return (pa.*pm)(1, 2); } int main () { A a; int i = bar (&a, &A::foo); if (i != 3) __builtin_abort (); i = baz (a, &A::foo); if (i != 3) __builtin_abort (); }