Итак, у меня есть этот шаблон псевдонима:
template<class MemberT, class ClassT>
using make_member_ptr = MemberT ClassT::*;
И я заметил, что make_member_ptr<int(char, long), class_type>
это то же самое, что и int(class_type::*)(char, long)
. Раньше я думал, что указатель на функцию-член полностью отличается от указателя на член данных.
Чем указатели на функции-члены отличаются от указателей на элементы данных?
Единственное, что я смог найти, это то, что если функция-член является виртуальной, вызов через указатель на базовую функцию вызовет производную функцию, что не является проблемой для указателей, не являющихся членами функции.
Причина, по которой я спрашиваю, заключается в том, что я имею дело с общими указателями на члены, и я хочу знать, на что мне нужно обращать внимание, и особый случай указателей на функции-члены и элементы данных.