As well as `qsort`. It is also not guaranteed to use quick sort.
E.g., here is the BSD qsort: http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd...
Here is the glibc one: http://www.umcs.maine.edu/~chaw/200801/capstone/n/qsort.c
However, C compilers are smart enough to transform the latter into the former, but only if you let them.
However, that's only true if you let them do their job, ie use link-time optimizations or code inclusion (which is where most of the template performance comes from).
Including the source of qsort() instead of linking against a DLL blob might be enough to make the C code perform as well as the C++ code.
I would be surprised if other high-performance compilers were unable to do so.
I'll update the gist with clang results as I get them built and tested.
Of course you won't see any performance improvements if you only build your executable with LTO, but still link dynamically or statically against a non-LTO capable libc.