有结构和功能:
struct S {
T1 t1;
T2 t2;
// и т.д.
} s;
template <class T> f(const T& t, const char* name) { /* что-то */ }
以下(伪)代码需要工作:
for (поле : поля(s))
f(поле.значение, поле.имя);
也就是说,您需要以某种方式枚举结构的所有字段,将它们的类型、值和名称作为字符串获取。
我知道C++中没有反射。但是这里在执行时不需要反射,在编译或链接阶段需要反射。因此,可以通过结构声明以任何方式变态S,但不可能触及功能f。但最后,必须以某种方式创建一个结构或类似结构的东西,它允许您访问字段(s.t1等) 。
您不能使用第三方库,但可以使用宏、模板和通常所有可用的C++14功能。