One of the driving priniciples of C++ design is "Don't pay for what you don't use".
You are possibly referring to the requirement of
§23.3.5.5 list
operations
void merge(list& x);
void merge(list&& x);
template void merge(list& x, Compare comp);
template void merge(list&& x, Compare comp);
22 Requires: comp
shall define a strict weak ordering (25.4), and both the list and the argument list shall be sorted according to this ordering.
What happens in an actual implementation is that the merge operation doesn't just take two lists and copies the elements from one into another, it merely exploits the underlying representation of some kind of linked list like structure, and relinks elements from one list into another. It will do this by going through both lists and taking the next bigger element. Since the lists are both sorted already, it can do this by always just looking at the first element of both lists. An operation in linear time O(n).
Would you always concatenate them (an operation possible by a splice like operation in constant time) and then sort them, the complexity would raise to O(n log n). This is undesired if you already have sorted lists.
If you don't, then splicing them together, and sorting afterwards is the thing you want to do.
Offering all these functionalities seperately (splice, merge, sort), the user can chose what is the most efficient thing to combine his lists, based on his knowledge of them being already sorted or not.