Sva*_*zen 11 c++ default-constructor c++11 c++14
我正在为一些没有编译的代码做一些测试,我发现这段代码:
struct A {
A(int) {};
virtual void foo() = 0;
};
struct B : public virtual A {
virtual void bar() = 0;
};
struct C : public B {
C() : A(1) {}
virtual void foo() override {}
virtual void bar() override {}
};
int main() {
C c;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在C++ 11中无法编译(在g ++ 7.0.1上)‘B::B()’ is implicitly deleted because the default definition would be ill-formed,而在C++ 14中编译成功.
我试图找出C++ 14的哪个新功能允许它工作,但无济于事.cppreference中的描述没有提到任何类似的东西.
为什么这段代码可以用C++ 14编译而不能用C++ 11编译?
小智 1
绝对这是 gcc 7 中的一个错误,因为当我在 gcc 7+ 的在线编译器中检查你的代码时,它工作得很好,没有任何问题。
因此,我在这里为您提供在线 IDE,您可以在其中设置您最喜欢的编译器并尝试进行测试(如果您愿意)。
抱歉,我无法更好地帮助您,但我无法重现您的错误。
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |