Selection sort implementation in C++
In all three of your examples you limit yourself to using arrays.

This is not very C++ like (even if you templatize the object). I would change the interface to use iterators. That way your sort can be applied to any container with a random access iterator.

template&lt;typename I&gt;
void selection_sort(I begin, I end) {
    std::size_t size = std::distance(begin, end);