how to create a template with both default type argument and variadic type argument? or any work around I created a trait struct FnOnArg to see if Fn can call on Arg