代码如下
struct B {
~B() = delete;
};
B * b = new B{};
Run Code Online (Sandbox Code Playgroud)
在最新的 MSVC 中编译失败,出现错误:
error C2512: 'B': no appropriate default constructor available
note: Invalid aggregate initialization
Run Code Online (Sandbox Code Playgroud)
同时GCC和Clang都看不出代码有什么问题,demo: https: //gcc.godbolt.org/z/va9vcsEed
假设 MSVC 中只是一个错误是否正确?
总的来说,析构函数的存在或删除是否会改变聚合初始化的任何规则?
c++ destructor aggregate default-constructor language-lawyer