我想遍历 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/

10-15 06:07