constexpr struct {} s;
我测试了在https://GCC.godbolt.org/找到的所有版本的GCC和Clang。GCC的每个版本都接受代码,而Clang的每个版本都拒绝代码。
我想知道在这种情况下哪个编译器是正确的?
标准对此有什么规定?
Clang遵循[dcl.init]/7中的以下段落:
如果程序调用常量限定类型T
的对象的默认初始化,则T
应是具有用户提供的默认构造函数的类类型。
这种措辞有缺陷,因此被GCC忽略了(从V3.9开始,也被Clang忽略了)。
以上引用与核心问题253的不同,因为N2762移动/调整了所引用的第9段。