イテレーターカテゴリの話なんですけど
デリファレンスでコンテナの中身への参照をそのまま返すのではなく
なにか他の型のテンポラリオブジェクトを返すようなイテレーターって
ランダムアクセスできようがなんだろうがカテゴリはoutput_iteratorでいいんですか?

例えば
template <class Proxy> class MyIterator {
std::vector<MyClass>::iterator i_;
public:
Proxy operator * (void) const { return Proxy(*i_); }
// ry
};

std::vector<MyClass> vec;
MyIterator<Hoge> i = vec.begin(), j = vec.end();
while(i != j) {
*i = MyClass(); // コンパイルされるがテンポラリへの代入なので意味ない。あるいは型によってはコンパイルエラー
++i;
}