It still does not solve the problem with passing the func-address (as in call2()) to be a template-argument for the call() function. Compiler complains at call< F >(arg); because "'F' is not a valid template argument for type 'void (*)(int)' because 'F' does not have external linkage"
I thought of using <typename T, T t> syntax but I have no idea how to use it with function pointer :)
> The problem is with passing the function address to be a template argument just as in call2().
So what are you trying to say? That the C++ standard must be amended so as to allow something that is not a constant expression to be a template non-type argument?