C++ 11允许在以下标准中使用标准布局类型union:Union的成员具有用户定义的构造函数
我的问题是:我是否保证在union超出范围时会调用自定义析构函数?
我的理解是我们必须在切换时手动销毁和构建:http://en.cppreference.com/w/cpp/language/union#Explanation
但是像这样的例子怎么样:
{
union S { string str;
vector<int> vec;
~S() {} } s = { "Hello, world"s };
}
Run Code Online (Sandbox Code Playgroud)
当s超出范围时,我是否将内存泄漏到堆上分配的字符串,因为我没有调用string析构函数?