小编csh*_*ton的帖子

C++ 14 constexpr在构造函数中的条件初始化

我想根据参数选择在构造函数中初始化的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)

虽然我使用intfloat,我们的目标是与其他更复杂的类型(但仍允许在C++ 14集),因此,使用位置,新的(不是分配)的工作.

问题是这个构造函数不能constexprconstexpr方法那样不允许使用placement-new .有没有办法解决这个问题(除了使isint参数成为正式类型系统的一部分)?某种类型的条件初始化列表可以工作,但我不知道有办法做到这一点.

c++ unions constexpr c++14

8
推荐指数
1
解决办法
2305
查看次数

标签 统计

c++ ×1

c++14 ×1

constexpr ×1

unions ×1