Of course -- at least logically that should be true. How "expert" you need to be is context dependant, I think. What is most important is that you focus on a specific task, and skip unnecessary options and details.
That is true, but then it is generally true that many general algorithms can be optimised for specific situations better than a library can optimise than, if an expert implements it.
Okay, I have heard of this, which only highlights the issue further: if you really want speed, write your own sort for the task. No function pointer, no templates, no unnecessary operations. I am pretty sure OOP also, by nature tends to involve unnecessary ops (altho no doubt this has been greatly addressed); as I said above, I'd rather play around with a class, but once the playing is finished and you are as chuffed as you can get with the elegance, etc, it is probably better done with plain ol' datatypes and functions...
However, I think cpjust is really talking about a difference due to a difference in the core language. In particular, that compilers can optimise std::sort when it is passed a function object better than they can optimise std::sort when it is passed a function pointer, and likewise when qsort is passed a function pointer. Because of the lack of templates, it is less convenient to get the same kind of optimisation for a C library.