std::vector<int> a;
std::vector<int>::iterator i = a.begin();
std::vector<int>::const_iterator ci = a.begin();
これが出来て
struct Foo
{
 struct iterator{};
 struct const_iterator{};
 iterator begin(){ return iterator(); }
 const_iterator begin() const { return const_iterator(); }
};
Foo f;
Foo::iterator i = f.begin();
Foo::const_iterator ci = f.begin();//ここ
これが出来ないのは何故ですか。