9

私はこの問題を奨励します: もし私が持っているなら

class A
{
public:
};
int main()
{
   A a{};
   A b{a};
}

gcc は次のように与えます:

move.cc: 関数 'int main()' 内: moves.cc:15:7: エラー: 'A' A b{a} の初期化子が多すぎます。

しかし、A b{a} の代わりに A b(a) を使用すると、すべて正しくコンパイルされます。デフォルトのコンストラクターを宣言すると、それもコンパイルされます。なぜそう機能するのですか?

4

3 に答える 3

2

GCC は標準に従っていましたが、これは既知の欠陥でした。core issue 1467を参照してください。不具合レポートは 2014 年 11 月に解決され、新しい動作は GCC の次のメジャー リリース (バージョン 5.1、2015 年 4 月リリース) でサポートされます。

于 2013-10-01T12:26:36.640 に答える