Unify the disparate function pointer and member function pointer wrapper structs into one, making use of the input_types typedef to specify the wrappers in a more unified way. Unit tests still pass, unaltered.