c++11では、 Most Vexing Parseを回避する明示的な方法として、Uniform Initialization Syntaxが導入されました。
http://en.cppreference.comはそれをDirect List Initializationと呼んでいると思います。
とにかく、あなたがそれを何と呼んでも、 visual-studio-2012では機能しないようです。この例を考えると:
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
はクラス/構造体/共用体が必要です
これは、C++11より前の回避策で回避const vector<int> bar((istream_iterator<int>(foo)), istream_iterator<int>());
できます。しかし、イライラします。Visual-studio-2012には統一初期化構文が実装されていませんか?