-2

我想做这个:

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,而是认为我正在对函数进行原型设计。

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

4

1 回答 1

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上阅读有关变量初始化与函数声明歧义的更多信息。

于 2014-05-29T12:42:05.770 回答