そもそもSTLのようなテンプレートをふんだんに使うコードと、
319がやろうとしている実装の分離とは相性が悪いから、
どこかで無理が出てきたり気持ち悪くなってくるのは仕方がない。

こういうときにboost::functionのイテレータ版があればいいなとは思う。
それがあったとしても、その実装は結局322が言っていることと同じことになるはずなんだけどね。