手元にあるC++標準テンプレートライブラリをざっと読む限りだと:
この場合言われてる「副作用」は厳密な参照透明性
(、内部状態変数やグローバル変数への代入、入出力禁止とかを含む)
とかじゃなくて、与えられた引数(イテレータ)の指すオブジェクトを
書き換えてはイカンということなんじゃ?