Относительно /OutputIterator -s совместимо ли изменять их семантику только для перемещения? Конечно, я имею в виду только недавно созданные пользовательские итераторы, а не STL.Итераторы ввода и вывода только для перемещения
Примечание к семантическим требованиям к ++i
и ++r
выражению для входных и выходных итераторов соответственно говорит:
Постусловие: Любые копии предыдущего значения
i
больше не требуется, чтобы быть разыменовываемыми или быть в домен==
.После этой операции
r
не требуется увеличивать и любые копии предыдущего значенияr
больше не требуются, чтобы быть разборчивыми или увеличивающимися.
Я думаю, что в большинстве случаев запрещается копировать итераторы ввода/вывода, но никогда не слышал таких советов. Это плохая идея?
Если бы у меня была машинка времени, чтобы эти итераторы перемещались только в C++ 98, она была бы в верхней части моего списка. Создание собственных итераторов ввода-вывода - это безопасный эксперимент. Если вы попытаетесь использовать их с кодом, который пытается их скопировать, вы будете уведомлены во время компиляции, и вы сможете проверить эту ситуацию. Это может даже указать на ошибку в этом общем коде. –