GCC позволяет преобразовывать указатели на функции-члены в простые указатели на функции (первый аргумент функции, вызываемой указателем простой функции, тогда равен this
).
Проверьте соответствующую ссылку в руководстве .
Для этого требуется флаг -Wno-pmf-conversions
, чтобы отключить соответствующее предупреждение для явно нестандартной функции. Очень удобно для сопряжения библиотек стилей C с программированием стилей C ++. Когда указатель на функцию-член является константой, для этого даже не требуется вообще генерировать код: API все равно будет использовать этот порядок аргументов.
Если у вас уже есть функтор, то сглаживание функтора таким образом, вероятно, будет означать сглаживание его operator()
, давая вам функцию, которая должна вызываться с указателем класса функтора в качестве первого аргумента. Который не обязательно помогает так много, но по крайней мере имеет связь C.
Но, по крайней мере, когда вы не проходите через функторы, это полезно и обеспечивает нормальную замену связи C для std::mem_fn
из <functional>
.