我正在努力解决具有挑战性但又简单的问题。假设我有一个目标函数如下
void target_fnc(int arg1, double arg2)
{ /* do something here */ }
我想“提取”的是变量名(即'arg1','arg2')。例如,通过一些预处理为变量获取此信息是微不足道的
#define PRINTER(name) printer(#name)
void printer(const std::string& name) {cout << name << endl;}
如果有多个变量,我也可以使用可变参数宏
#define PRINTER2(names...) printer(#names)
printer(arg1,arg2)
但我不知道如何从目标函数中“提取”..例如,使用可变参数模板技术如下
template <typename ...A>
void extract(void (*)(A...))
{ printer(A...); }
它行不通:我将获得 'A...' 而不是解压的变量,当然...任何提示?
谢谢!注意:我使用的是 C++11,gcc 4.8.1