是否有一种标准方法来获取函数参数的类型并将这些类型作为模板参数包传递?我知道这在C++中是可行的,因为它之前已经完成了.
我希望用C++ 14或即将推出的C++ 1z,这里有一种惯用的方法arg_types<F>...:
template <typename ...Params>
void some_function(); // Params = const char* and const char*
FILE* fopen(const char* restrict filename, const char* restrict mode);
int main(){
some_function<arg_types<fopen>...>();
}
Run Code Online (Sandbox Code Playgroud)
需要明确的是,一个声称没有标准方法可以做到这一点的答案不是答案.如果没有答案,我希望问题仍然无法解决,直到解决方案被添加到C++ 500或直到宇宙的热量死亡,以先发生者为准:)
编辑:删除的答案指出我可以PRETTY_FUNCTION用来获取参数类型的名称.但是,我想要实际的类型.不是那些类型的名称.