一个简单的联合构造函数在被删除时会做什么?

时间:2017-09-25 15:27:13

标签: c++ constructor default unions

一个简单的联合构造函数在被删除时会做什么?

例如:

+

显然,这本身就是一场彻底的灾难,但我希望像这样的对象成为另一个类的私有成员,它将负责初始化相应的对象(s或v)并销毁它。基本上,它是匿名工会建筑,除了必须在这里命名工会。

例如

union Test{
    std::string s;
    std::vector<int> v;

    Test(){}
    ~Test(){}
};

所以我希望,即使我必须为编译代码定义一个默认构造函数,并且语言会删除类似的构造函数,但我不会导致未定义的行为。我希望对构造进行标准支持的评论。

[以下是外围设备,不是问题:]

(问题的背景是我只有在使用g ++和-flto [链接时间优化]构建时才会出现奇怪的行为,无论优化级别如何(即从-Og到-O3)所以我一直在搜索代码,包括类似于Outer的类,用于任何潜在的问题。)

感谢。

0 个答案:

没有答案