結局何がいけないのかというと,「Input Iterator Concept」を
安易に「istream_iterator」に結び付けてしまうのがいけないんでしょう.
「istream_iteratorをstrong_copyに渡して例外が飛んだら入力が失われるから
Strong Guaranteeじゃねぇぞヽ(*`Д´)ノゴルァ」と文句を言うのは,
「あるグローバル変数をincrementする特殊なInput Iteratorを
strong_copyに渡して例外が飛んだらその変数が変化したままだから
Strong Guaranteeじゃねぇぞヽ(*`Д´)ノゴルァ」と文句を付けるのと
全く同等だ,ってことなんでしょう.(後者がナンセンスなのは明白でしょう)
ユーザが任意に設定し得る副作用の巻き戻しまで面倒を見切れるはずがない.
だからStrong Guaranteeの定義で,副作用の面倒は見ない,とした.
要するに結論はstrong_copyはInput Iteratorを入力に取れる,ですね.
・・・でもやっぱり納得できねぇ!