C++ 初始化任何联合成员(指定的初始值设定项)
当宣布联盟时,例如C++ 初始化任何联合成员(指定的初始值设定项),c++,c++20,C++,C++20,当宣布联盟时,例如 union u { int x; float y; }; 可以按如下方式构造联合体: u integer { .x = 10 }; u fraction { .y = 10.f }; 假设我有一个指向成员的指针 auto union_member_pointer = &u::y; 什么语法允许我抽象地分配给工会的那个成员?i、 e u unknown { .*union_member_pointer = { } }; // doesn't work 指
union u
{
int x;
float y;
};
可以按如下方式构造联合体:
u integer { .x = 10 };
u fraction { .y = 10.f };
假设我有一个指向成员的指针
auto union_member_pointer = &u::y;
什么语法允许我抽象地分配给工会的那个成员?i、 e
u unknown { .*union_member_pointer = { } }; // doesn't work
指定的初始化不允许是动态的。它应用于成员的名称,而不是成员指针或任何类似的名称。然后将
union\u member\u pointer
视为constexpr
,这在我的用例中。我现在能做什么?@nowi:没什么。如上所述,您必须使用名称;成员指针不是名称。这太糟糕了。看起来我将坚持在构造函数的主体中使用成员指针来维护抽象,并正常分配它。