【发布时间】:2021-06-11 23:18:50
【问题描述】:
有一个C++ Technical Specification on static reflection(当前PDF draft和cppreference page) 可能会进入 C++23 或更高版本。
在目前的草案中是否有可能(我知道语法可能还没有固定) 访问结构字段/按名称调用类成员函数?
例如
struct Test {
int x;
int y;
};
Test foo;
auto meta = reflexpr(foo); // access meta information about class
some_magic_setter<"x", meta>(foo, 5); // ??? Should do: `foo.x = 5`
这可能吗?如果可以,如何?
编辑:当我查看 TS draft 时,我发现大多数函数都被命名为“get_XX”(如 get_type、get_scope、...)或“is_XXX”(如 is_private、. ..) 这似乎只提供信息(这显然是反思的目的)。但是,我找不到任何似乎允许成员访问给定对象的东西。欢迎任何提示。
【问题讨论】:
-
您是在问TS 是否支持此功能,或者是否可以使用当前标准来完成?对于后者,这是一个骗子stackoverflow.com/questions/41453/…
-
是的,有可能。
-
@cigien 我只询问 TS。
-
@Yakk-AdamNevraumont 当我查看 TS 时,我发现大多数函数都被命名为“get_XX”(如
get_type、get_scope、...)或“is_XXX”(如 @ 987654332@, ...) 在我看来,这似乎只提供信息(这显然是反思的目的)。但是,我找不到任何似乎允许成员访问给定对象的东西。欢迎任何提示应该如何在 TS 中完成。
标签: c++ reflection c++23