問題タブ [uniform-initialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 関数からの三項演算子の戻り値による均一な初期化
これがコンパイラのバグ (Arch Linux の gcc 4.8) なのか、標準の問題なのかはわかりませんが、以下のコードはコンパイルに失敗します。getFoo1 は許可されているのに getFoo2 は許可されていないのはなぜですか?
c++ - PHP連想配列のようにC++ 0x 3Dマップを初期化する
私はちょうど新しいc++ 0xのものに取り掛かり、次のようなマップをインスタンス化しています:
簡単に可能です。しかし、私はphpのようなことをすることができますか?
私は構文に慣れていません。たぶん、このようなもの
だから私はいつもインデックスを書く必要はありません:
c++ - バグかどうか?std::string を使用した Visual Studio 2013 プレビュー std::vector 初期化子リスト
最後に彼らはそれをしました。MSVC12 コンパイラで均一な初期化が可能になりました。-std=C++11
しかし、フラグ付きの GNU GCC 4.8.1 とは動作が異なることがわかりました。
次のコードを検討してください。
GCC での結果 (予想どおり):
(イデオン リンク)
MSVC12 での結果:
文字列が初期化されていないようです。
質問:
- コード スニペットの構文は C++11 標準に従って正しいですか?
- GCC の動作は標準ですか、それともある種の拡張機能ですか?
- MSVC の動作は標準ですか、それともバグですか?
c++ - 均一な初期化を伴う自動は、予期しない型に展開されます
GCC 4.7.2 でコンパイルされたこの短いプログラムを検討してください。g++ -std=c++11 test.cc
コンパイラは次のエラーを出力します。
auto 型がstd::shared_ptr<type>
;の代わりに初期化リストに展開されることを示します。実際、 で置き換える{...}
と= ...
、 auto が正しい型に展開されるため、コードがコンパイルされます。
この一見明白な使用例が期待される結果を達成できないことに少し驚いています。特に、問題を初期化するための最終的な解決策として宣伝された新しいブラケット初期化構文を思い出すとき。
私の質問は次のとおりです。これは標準で意図されていましたか? それとも見落としですか、それともgccのバグですか?それとも私の考えが間違っているだけですか?
c++ - イテレータのイニシャライザ リストを使用してコンテナを構築する
次のように、イテレータ範囲を使用してベクトルを構築することができます。
しかし、次のように、C++11 の統一された初期化構文 (ブレーサーに注意してください) を使用してコードをコンパイルして実行することもできます。
ここで実際に何が起こっているのですか?
初期化子リストを受け取るコンストラクターは、他の形式の構築よりも優先されることを知っています。コンパイラは、の 2 つの要素を含む初期化子リストを取得するコンストラクタに解決すべきではありませんstd::istream_iterator
か? std::istream_iterator
ベクトル値の型に変換できないため、これはエラーになるはずstd::string
ですよね?