diff --git a/src/cffi.h b/src/cffi.h index 31761b87..3fe819e1 100644 --- a/src/cffi.h +++ b/src/cffi.h @@ -116,6 +116,12 @@ std::enable_if_t && !std::is_pointer_v, PyObject*> py_var(VM /*****************************************************************/ struct NativeProxyFuncCBase { virtual PyObject* operator()(VM* vm, ArgsView args) = 0; + + static void check_args_size(VM* vm, ArgsView args, int n){ + if (args.size() != n){ + vm->TypeError("expected " + std::to_string(n) + " arguments, but got " + std::to_string(args.size())); + } + } }; template @@ -126,9 +132,7 @@ struct NativeProxyFuncC final: NativeProxyFuncCBase { NativeProxyFuncC(_Fp func) : func(func) {} PyObject* operator()(VM* vm, ArgsView args) override { - if (args.size() != N){ - vm->TypeError("expected " + std::to_string(N) + " arguments, but got " + std::to_string(args.size())); - } + check_args_size(vm, args, N); return call(vm, args, std::make_index_sequence()); }