传递<char>由istreambuf_iterator构造的 std::vector

Passing a std::vector<char> constructed from istreambuf_iterator

本文关键字:std iterator vector istreambuf char lt gt 传递      更新时间:2023-10-16

我有以下代码:

std::ifstream ifs(fileName, std::ios_base::in | std::ios_base::binary);
std::vector<char> vecdata(std::istreambuf_iterator<char>(ifs), 
                          std::istreambuf_iterator<char>());
image->setData(std::move(vecdata));

setData声明如下:

void Image::setData(std::vector<char> && data);

我有以下错误:

reader.cpp:752: 错误:无匹配功能

'image :: setdata(std :: vector (&amp;)(std :: istreambuf_iterator>, std :: istreambuf_iterator>(*)())'

image->setData(std::move(vecdata));
                                 ^

候选人是:

image.h:12:void image :: setdata(std :: vector&amp;&amp;)

我正在使用GCC 4.91

MCVE具有GCC 5.4,相同的行为:http://rextester.com/qya50737

这是GCC错误吗?

谢谢

您最烦人的解析:使用{}代替()

std::vector<char> vecdata{std::istreambuf_iterator<char>(ifs), 
                          std::istreambuf_iterator<char>()};