↑訂正

std::vector のイテレータは auto が使えて便利なのに...
for (auto i = v.begin(); i < v.end(); ++i)  i->clear(); // OK

イテレータが使えないクラスだと...
for (auto i = 0; i < f.size(); ++i)  f.getItem(i).clear(); // i は int、size() は size_t なので不可
for (auto i = f.size(); --i >= 0; )  f.getItem(i).clear(); // i は size_t なのでこの手も使えない
for (auto len = f.size(), i = 0; i < len; ++i)  f.getItem(i).clear(); // len は size_t なのに i は int なので不可

結局こうするしかないの?(いちいち型を調べてコーディングしないといけない?)
for (size_t i = 0; i < f.size(); ++i)  f.getItem(i).clear(); // OK