传递从istreambuf_iterator

时间:2017-03-14 09:49:02

标签: c++ c++11 gcc stl

我有以下代码:

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错误吗?

由于

1 个答案:

答案 0 :(得分:5)

你得到了最令人烦恼的解析:使用{}代替()

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