传递<char>由istreambuf_iterator构造的 std::vector
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 (&amp;)(std :: istreambuf_iterator>, std :: istreambuf_iterator>(*)())'
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错误吗?
谢谢
您最烦人的解析:使用{}
代替()
:
std::vector<char> vecdata{std::istreambuf_iterator<char>(ifs),
std::istreambuf_iterator<char>()};
相关文章:
- std::iterator::reference 必须是引用吗?
- Visual accept std::string from std::byte iterator
- 什么是"std::set<int,int>::iterator"?
- 从 std::vector 中删除项目时"Iterator not incrementable"
- 如何从 boost::container::vector<std::string>::iterator 访问索引和对象?
- 错误:与'operator='不匹配(操作数类型为"std::map<int、double>::iterator
- 如何将STD :: Iterator与基本类型Uint8_t**使用
- std::map<K,V>::iterator 是否实例化 std::map<K,V>?
- 关于从第二个存储值_ty2秒复制std :: Map Iterator的数据的问题
- 如何使用for_each,transform,Iterator和lambda的某种组合将STD ::集合的字符串转换为小
- 给定一个 std::set::iterator,获取一个指向下一个元素的迭代器
- 在std::向量中查找Iterator
- 如何使用regex_token_iterator<std::string::iterator>通过迭代器本身获取子匹配的原始字符串的位置?
- Clang Modules 与 std <iterator> 和 <boost/move/iterator.hpp 的交互>
- C 寻求一个std :: string :: iterator的位置
- std::multiset::iterator = NULL 不再有效
- 有什么方法可以将std :: string :: iterator的值存储在C 中的char *中
- "Invalid iterator range"将initializer_list插入 std::vector 时
- 需要澄清C++ std::iterator
- MFC容器中的find_if,迭代器派生自std::iterator