我想根据参数选择在构造函数中初始化的union成员.以下是一个有效的示例:
struct A {
union {
int i;
float f;
};
A(double d, bool isint) {
if (isint) new(&i) int(d);
else new(&f) float(d);
}
};
Run Code Online (Sandbox Code Playgroud)
虽然我使用int和float,我们的目标是与其他更复杂的类型(但仍允许在C++ 14集),因此,使用位置,新的(不是分配)的工作.
问题是这个构造函数不能constexpr像constexpr方法那样不允许使用placement-new .有没有办法解决这个问题(除了使isint参数成为正式类型系统的一部分)?某种类型的条件初始化列表可以工作,但我不知道有办法做到这一点.