考虑以下代码:
typedef istream_iterator<char> char_itr ;
char_itr eos;
string ll("some text here");
istringstream line_in(ll);
char_itr start(line_in);
move_iterator<char_itr> mstart(start); // !!!
move_iterator<char_itr> meos(eos);
vector<char> vc(mstart, meos);
由于行 (!!!),上面的代码将无法编译:
error C2440: 'return' : cannot convert from 'const char' to 'char &&'
但是,如果您分别用and替换mstart
and (常规迭代器),则代码将编译。为什么我做不出来?meos
start
eos
move_iterators
编辑:
对于那些想知道为什么我想从流/字符串中移动一个字符的人。char
实际问题涉及比应避免从字符串复制更复杂的数据类型。char
只是为了简单起见而使用,以呈现导致错误的机制。