私は次のコードを持っています:
int x = {{}};
この構文はC++標準に従って有効ですか? (C++ 11以降に興味があります。)
最新のコンパイラを使用する場合、問題はありませんが、一部の古いコンパイラ(GCC 4.8.5など)では次のエラーが発生します。
エラー:タイプ 'int'のスカラー初期化子を中括弧で囲みます
これは不正な形式です。 gccはそれを受け入れるのが間違っており、clangは 警告 のように、拡張として許可しているようです。
最新のドラフトを引用しますが、違いはありません。リストの初期化は [dcl.init.list] に従って次のように機能します。ここで、Tはint
です。