Разве следующий код, приведенный в C++ Primer, неверен?
ostream_iterator<int> out_iter(cout, " ");
for (auto e : vec)
*out_iter++ = e; // the assignment writes this element to cout
cout << endl;
Постфиксный оператор возвращает старое значение, а не ссылку, тогда как его можно заставить действовать как lvalue?
Пожалуйста, поправьте, если я ошибаюсь
out_iter++
не является lvalue. Это rvalue итератора.*out_iter++
является lvalue. - person n. 1.8e9-where's-my-share m.   schedule 28.12.2017*out_iter++
означает*(out_iter++)
, а не(*out_ptr)++
. - person Raymond Chen   schedule 28.12.2017out_iter++
тоже является lvalue. - person Edgar Rokjān   schedule 28.12.2017