来完成对应函数的调用, c++的动态版函数类型擦除后的入口参数是统一的Args, 出口参数是Value, runtime::call()提供了任意输入参数到Args的转换, 如下所示, 我们即可完成对obj...std::tuple类型, 函数所有参数的tuple类型, 注意类的成员函数首个参数是类对象本身.
3....>(func, args, ArgEnumerator());
}
};
此处重点关注 std::make_index_sequence和std::index_sequence的使用..., 借助index_sequence相关的函数, 我们可以很方便的对varidic template进行处理, 此处通过index_sequence的使用, 我们可以很好的完成args中包含的arg到函数需要的正确类型参数的转换...ConvertArgs和ChooseCallReturner一个是将从args中取到的Value置换为具体类型的参数, 一个是将具体类型的返回值置换为Value, 通过这种方式, 最终实现了函数的调用参数和返回值的统一