Yes, that’s fine and standard (well, in the class you need to declare const_iteratorfirst before your member function insert()takes a parameter of this type).
- , , . , const_iterator Array, , , . , , :
// this is okay
template <class T, int SIZE>
typename Array<T, SIZE>::const_iterator Array<T, SIZE>::some_method() { ... }
// error: this does *not* find the nested const_iterator class
template <class T, int SIZE>
const_iterator Array<T, SIZE>::some_method() { ... }
// this is okay. trailing return type comes after the class introducer
template <class T, int SIZE>
auto Array<T, SIZE>::some_method()
-> const_iterator
{ ... }