I did some microbenching and found no evidence that the SPEAD2_PTMF wrapper was improving performance at all, compared to just passing the pointer-to-member-function to pybind11, even though the latter involves making a call via a pointer (bad for branch prediction). So I've eliminated the SPEAD2_PTMF macro entirely, and simplified SPEAD2_PTMF_VOID to use a more obvious approach. The latter also isn't needed for any const member functions so I eliminated that support too.
I did some microbenching and found no evidence that the SPEAD2_PTMF wrapper was improving performance at all, compared to just passing the pointer-to-member-function to pybind11, even though the latter involves making a call via a pointer (bad for branch prediction). So I've eliminated the SPEAD2_PTMF macro entirely, and simplified SPEAD2_PTMF_VOID to use a more obvious approach. The latter also isn't needed for any const member functions so I eliminated that support too.