0

引入了统一初始化语法作为解决Most Vexing Parse的显式方法。

我相信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