macro_rules! func_wrapper {
($func:expr, $n_args: tt) => { ... };
($func:expr, k, 1) => { ... };
($func:expr, k, 2) => { ... };
($func:expr, k, 3) => { ... };
($func:expr, $t: ty, 1) => { ... };
($func:expr, $t: ty, 2) => { ... };
($func:expr, $t: ty, 3) => { ... };
($func:expr, $t: ty, 4) => { ... };
($func:expr, $t: ty, $_:expr) => { ... };
}