【发布时间】:2018-02-08 04:48:12
【问题描述】:
这段代码在 GCC 5.X、MSVC 上编译得很好,但是 GCC 6.X 给出了错误:
"从初始化列表转换为 'a' 将使用显式 constructor 'a::a()'", clang " 选择的构造函数在 复制初始化”。
删除explicit 或更改为a c{} 可以解决问题,但我很好奇为什么会这样。
class a
{
public:
explicit a () {}
};
struct b
{
a c;
};
int main() {
b d{};
}
【问题讨论】:
-
使用
b d;或b d{a{}}也可以
标签: c++ c++11 c++14 language-lawyer