That's inefficient because you make a copy of the array going in, and possibly another copy going out. I think it would be better to sort the array in place: void selectSort(array<string,arraylength> &list);
If the user wants to sort into a copy, they can make the copy themselves easily enough:
The & is technically part of the type. T& means "reference to T". So it's a reference to array<string, arrayLength> in your code. Passing by reference avoids a copy and allows you to modify the same object that is passed to the function.