c++11引入了统一初始化语法作为解决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
必须有类/结构/联合
我可以使用c++11之前的解决方法来解决这个问题:const vector<int> bar((istream_iterator<int>(foo)), istream_iterator<int>());
但我觉得它令人沮丧。是否没有为visual-studio-2012实现统一初始化语法?