|
1
37
这是 gcc bug 57082 .
或在 [expr.new]/20 :
我们有这些东西吗?不,这里没有具有自动、静态或线程存储持续时间的对象,也没有构造的临时对象,也没有
新表达式
创建数组。这里只有一个物体
因为我们既没有明示也没有暗示
|
|
|
2
4
可能是gcc的错误。 标准指定在新表达式创建数组时可能调用析构函数 [expr.new] :
|
|
|
3
2
据我所知,示例中没有对象被破坏,如果将表达式更改为
我认为不编译示例代码是GCC中的一个bug。 Clang compiles it just fine 回答新添加的语言律师标签。 关键的标准规则是在[class.dtor]中:
5.3.4是只指定
12.6.2是只指定
15.1是[except.throw],指定如何销毁异常对象,但不适用 结论:没有第5.3.4、12.6.2和15.1节。包含适用于此情况的规则,析构函数不被调用,也不存在delete表达式。因此,析构函数不可能被调用,因此它的格式很好,可以删除析构函数。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |