c++11介绍了Uniform Initialization Syntax作为解决Most Vexing Parse的明确方法。
我相信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
左边必须有class / struct / union
我可以使用前c++11解决方法解决此问题:const vector<int> bar((istream_iterator<int>(foo)), istream_iterator<int>());
但我觉得这很令人沮丧。是否为visual-studio-2012实现了统一初始化语法?