我有以下代码:
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: 错误:没有匹配函数来调用
&#39;图像::使用setData(标准::矢量 (&amp;)(std :: istreambuf_iterator&gt;, std :: istreambuf_iterator&gt; (*)()))&#39;
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错误吗?
由于
答案 0 :(得分:5)
你得到了最令人烦恼的解析:使用{}
代替()
:
std::vector<char> vecdata{std::istreambuf_iterator<char>(ifs),
std::istreambuf_iterator<char>()};