简体   繁体   English

传递一个std :: vector <char> 从istreambuf_iterator构造

[英]Passing a std::vector<char> constructed from istreambuf_iterator

I have the following code: 我有以下代码:

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 is declared as follows: setData声明如下:

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

I have the following error: 我有以下错误:

reader.cpp:752: error: no matching function for call to reader.cpp:752:错误:没有匹配的函数可以调用

'Image::setData(std::vector (&)(std::istreambuf_iterator >, std::istreambuf_iterator > (*)()))' 'Image :: setData(std :: vector(&)(std :: istreambuf_iterator>,std :: istreambuf_iterator>(*)()))''

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

candidate is: 候选人是:

image.h:12: void Image::setData(std::vector&&) image.h:12:无效的Image :: setData(std :: vector &&)

I am using gcc 4.91 我正在使用gcc 4.91

MCVE with gcc 5.4, same behavior : http://rextester.com/QYA50737 带有gcc 5.4的MCVE,行为相同: http : //rextester.com/QYA50737

Is this a gcc bug? 这是gcc错误吗?

Thanks 谢谢

You got Most Vexing Parse: use {} instead of () : 您获得了最令人讨厌的解析:使用{}代替()

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM