Wrote by mutouyun. (http://darkc.at/cxx-type-list/)
群里有个朋友要实现这么一个功能:如何在编译期把一个函数类型的参数减少一个。
简单来说,就是实现下面这个模板:
remove_func_par<2, void(int, long, short)>::type; // type = void(int, long)
根据输入的编译期整数,把函数参数表里对应的参数干掉一个。为了实现这种功能,我们需要操作变参模板的参数包。比如像这样:
// make function's parameters from the types
template <typename R, typename TypesT>
struct make_func_par;
template &l......
阅读全文