
Hello, A few days ago I developed a function argument caster because of a situation I had. Imagine you had a callback function that takes 4 arguments. x,y position of your mouse pointer, a bool indicating if a button is pressed, and then an int indicating the button that is pressed. Now imagine you already have a function that takes 2 ints representing the mouse coordinates and then renders an image at those coordinates. You can't assign this function to the callback because the sigs don't match. So you have a couple of options. a) wrap the function in a struct and overload operator () b) change the signature (but then change all places where you've invoked the function already) A produced unnecessary clutter and B can be error-prone depending on how big the project is. So I propose a function argument caster: bool drawfunc(int, int); callback = args_cast< 2, bool(int,int,bool,int) >(&drawfunc); callback( x, y, true, 3 ); // calls drawfunc(x,y) NOTE: the '2' as the first template parameter tells args_cast how many arguments the original function takes. The implementation I have also allows you to rewire the arguments from the synthsized function to the actual arguments, eg: callback = args_cast< 2, bool(int,int,bool,int), 1, 4 >(&drawfunc); callback( x, y, true, 3 ); // calls drawfunc(x,3) What do you guys think? If anyone is interested I posted the code to a game development community a while back. http://www.devmaster.net/forums/showthread.php?t=7744 - ali