// { dg-do compile } template struct takes_member_ptr; template struct takes_member_ptr {}; template void fun_takes_member_ptr(T Klasse::*) {} template struct order_member_ptrs; template struct order_member_ptrs {}; template struct order_member_ptrs { typedef int type; }; template struct order_member_ptrs { typedef int c_type; }; template struct order_member_ptrs { typedef int v_type; }; template struct order_member_ptrs { typedef int cv_type; }; struct X { void bar(float) {} void bar_c(float) const {} void bar_v(float) volatile {} void bar_cv(float) const volatile {} }; void foo() { sizeof(takes_member_ptr); sizeof(takes_member_ptr); sizeof(takes_member_ptr); sizeof(takes_member_ptr); sizeof(order_member_ptrs::type); sizeof(order_member_ptrs::c_type); sizeof(order_member_ptrs::v_type); sizeof(order_member_ptrs::cv_type); fun_takes_member_ptr(&X::bar); fun_takes_member_ptr(&X::bar_c); fun_takes_member_ptr(&X::bar_v); fun_takes_member_ptr(&X::bar_cv); }