【发布时间】:2017-08-04 14:05:05
【问题描述】:
我有以下代码:
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: void Image::setData(std::vector&&)
我使用的是 gcc 4.91
使用 gcc 5.4 的 MCVE,行为相同:http://rextester.com/QYA50737
这是一个 gcc 错误吗?
谢谢
【问题讨论】:
-
最令人烦恼的 Parse 是关键。
-
我通过搜索最棘手的解析得到了这个想法。第二个参数可以解释为指向返回 istreambuf_iterator
的函数的未命名指针。但是如何将第一个参数解释为函数声明参数呢?对我来说它只能是一个右值