【发布时间】:2018-02-24 15:06:46
【问题描述】:
问题很直接,我该如何生成:
std::tuple<float, int, double>
如果我知道类型:
struct Foo { float a; int b; double c; };
我怎样才能在两种转换中检索数据?
【问题讨论】:
-
C++ 语言本身并没有实现这种类型转换的功能。你必须自己做。
-
正常的答案是你不能。 C++ 没有执行此操作所需的反射。当然,您可以添加自己的预处理器脚本来解析声明并生成元组。还有一些基于 UB 的增强功能不应该起作用,但无论如何都会起作用。
-
你需要反思。您可以使用 magic_get 执行类似的操作,但它仅适用于 pod 类型。
-
@GuillaumeRacicot:感谢您提供指向 magic_get 的链接。我正在寻找那个。这是talk at CppCon,详细解释了它。
-
所有用户:cmets 仅用于 on-topic 澄清帖子。他们不是为了我刚刚清理的那种争吵。不要重新开始讨论。
标签: c++ tuples metaprogramming