Я вообще не вижу, где вам нужно модифицировать итератор.Скорее, вам просто нужно добавить несколько функций-членов в B, которые возвращают соответствующие итераторы к внутреннему:
template <class C>
class B {
C inner;
public:
typedef typename C::iterator iterator;
typedef typename C::const_iterator const_iterator;
// etc.
iterator begin() { return inner.begin(); }
iterator end() { return inner.end(); }
// and so on for rbegin, rend, cbegin, cend, ...
};
Редактировать: я должен добавить, что если вы хотите поддержать (для одного примера) back_insert_iterator
, выВам также понадобится добавить push_back
к B, который вы (вероятно) также осуществите, переместив его в C::push_back
.