[英]Passing a std::vector<char> constructed from istreambuf_iterator
我有以下代码:
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(&)(std :: istreambuf_iterator>,std :: istreambuf_iterator>(*)()))''
image->setData(std::move(vecdata)); ^
候选人是:
image.h:12:无效的Image :: setData(std :: vector &&)
我正在使用gcc 4.91
带有gcc 5.4的MCVE,行为相同: http : //rextester.com/QYA50737
这是gcc错误吗?
谢谢
您获得了最令人讨厌的解析:使用{}
代替()
:
std::vector<char> vecdata{std::istreambuf_iterator<char>(ifs),
std::istreambuf_iterator<char>()};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.