Nothing a little macro magic couldn't fix..
#define CALL(object, function, ...) (object->ops->function(object, __VA_ARGS__)) #define CALL(object, function, ...) (object->ops->function(object, __VA_ARGS__))That said, similar macro magic is used in C generic data structures and it works very well.