У тебя типы iterator и const_iterator никак не связаны. Как же, по-твоему, можно допустить подобное преобразование?
Со стандартными контейнерами проблем не будет. С твоими собственными — ну так решай сам, как делать. Либо воспользуйся наследованием iterator от const_iterator, либо добавь какие-то конструкторы, либо явно различай по имени константные/неконстантные функции, либо просто в выражении obj.begin() obj должен быть константным, тогда и вызовется константная функция. Непонятно, собственно, что у тебя вызывает затруднения.
Of course, the code must be complete enough to compile and link.