   dummy check: array copy function
template<typename T> void copy ( T a[], T b[], const unsigned int size ){for (unsigned int i=0; i < size; ++i)a = b;}//in sourceT data[15]={ /* ... */ };unsigned int first=5, last=10;copy(&data[first],temp,last-first);Am I doing anything stupid here?  It works as expected, but I'm not sure if it's "correct, standard c++".   
  It looks correct. However, standard C++ has a std::copy function that will do exactly what you want:T data[15]={ /* ... */ };std::copy(&data[first], &data[last], temp);;  Do all utility functions in the Std C++ Library which take iterators also work for pointers?   ;  Pointers are iterators; random access iterators actually.   