为什么我不能在向量Ctor中使用istream_iterators?

时间:2014-05-29 12:36:53

标签: c++ vector range stringstream istream-iterator

我想这样做:

std::istringstream foo( "13 14 15 16 17 18 19 20" );
std::vector<int> bar( std::istream_iterator<int>( bytes ), std::istream_iterator<int>() );

但是编译器认为我是一个函数原型,而不是将其识别为向量范围ctor。

有没有办法可以向编译器提示发生了什么?

1 个答案:

答案 0 :(得分:1)

如果您的编译器支持C ++ 11和统一初始化,则可以执行

std::vector<int> bar{ std::istream_iterator<int>( bytes ), std::istream_iterator<int>() };

如果没有,则转到

std::vector bar = std::vector<int>( std::istream_iterator<int>( bytes ), std::istream_iterator<int>() );

Sutter's Mill上阅读有关变量初始化与函数声明歧义的更多信息。