| // P0846R0 | |
| // { dg-do compile } | |
| // { dg-options "-std=c++2a" } | |
| struct A { | |
| template<typename T> | |
| 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<int>); | |
| if (i != 3) | |
| __builtin_abort (); | |
| i = baz (a, &A::foo<int>); | |
| if (i != 3) | |
| __builtin_abort (); | |
| } |