Only when you are ready to extend the library is writing templates required. I feel that this perspective is valuable, because I know how lost I was without it. I was first drawn to STL as a standard container library. It turns out that STL is not about containers. STL is really about generic algorithms.
Containers are just a necessary step to reaching generic algorithm nirvana.
Regardless of the contents of your array, your data is sorted. But consider the limitation of this kind of generic algorithm. Of course, if the compare is trivial, then dereferencing a function pointer is relatively expensive. Whether or not we care depends on the proportion of time spent in compares as opposed to swaps. Next, we have no control over construction, destruction, or assignment of the array items being sorted.