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()9 int main()
10 {
11   A a = {};
12   f1(a, &A::i);
13   f2(&a, &A::i);
14 }
15