One of those \"which compiler is right\" questions about templates. Consider following:
template class Container { public: template<
You can simplify code by using trailing return type. No need for typename or template:
typename
template
template<typename T> template<typename V> auto Container<T>::iterator<V>::operator++() -> iterator<V> & { //do your thing return *this; }
online compiler