0

Most Vexing Parseを回避する明示的な方法として、Uniform Initialization Syntaxが導入されました。

http://en.cppreference.comはそれをDirect List Initializationと呼んでいると思います。

では機能しないようです。この例を考えると:

istringstream foo("192 168 1 1");
const vector<int> bar{ istream_iterator<int>(foo), istream_iterator<int>() };

cout << bar.front() << endl;

エラーが発生します:

エラー C2601: bar: ローカル関数の定義が不正です

代わりに行う場合:const vector<int> bar(istream_iterator<int>(foo), istream_iterator<int>());エラーが発生します:

エラー C2228: 左側に.frontはクラス/構造体/共用体が必要です

これは、より前の回避策で回避const vector<int> bar((istream_iterator<int>(foo)), istream_iterator<int>());できます。しかし、イライラします。には統一初期化構文が実装されていませんか?

4

0 に答える 0