我想遍历 POD 结构的成员,我能想象它可以工作的唯一方法是使用模板。但为此,我需要解决这个问题的东西:
template <typename ...T>
void bar(T ...t) {
/* ... do something ... */
}
template <typename T>
void foo(T t) {
bar(magical_decompose(t));
}
struct MyPod {
int i;
double d;
float f;
};
int main() {
MyPod myPod = {1,2,3};
foo(myPod);
}
bar(magical_decompose(t));
应由模板转换为 bar(t.i, t.d, t.f)
。我不知道这是否可能,但我希望它成为可能。有没有人知道我怎么能做到这一点? 最佳答案
您正在寻找的东西称为反射。
目前该语言没有内置支持。
C++ 委员会中有一个 working group ,以及一些使用宏或其他技巧以某种方式模拟它的库。我能想到的最简单的解决方案是使用宏,它是在 Boost.Fusion 中使用 BOOST_FUSION_ADAPT_STRUCT 宏实现的。
关于c++ - 在可变参数模板的参数中解构 POD 结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25854696/