1 // { dg-do compile { target c++11 } } 2 3 struct A { int i; }; 4 // { dg-final { scan-assembler "_Z2f1Ii1AEDTdsfp_fp0_ET0_MS2_T_" } } 5 template <class T, class U> auto f1 (U u, T U::* p) -> decltype(u.*p) { return u.*p; } 6 // { dg-final { scan-assembler "_Z2f2Ii1AEDTpmfp_fp0_EPT0_MS2_T_" } } 7 template <class T, class U> auto f2 (U* u, T U::* p) -> decltype(u->*p) { return u->*p; } 8 main()9int main() 10 { 11 A a = {}; 12 f1(a, &A::i); 13 f2(&a, &A::i); 14 } 15