Question:
How can I provide my own predicate for the list::sort method in Visual C++ 5.0? The method appears to require that any function object passed must be derived from greaterstd::binary_function) that has a non-virtual operator() method so my operator() never gets called. Am I missing something?
Answer:
There is no such restriction for the comparison algorithm for sort in STL.As a matter of fact, there is not a single place where STL relies on virtual functions. If your compiler’s implementation casts thecomparator to the base class’ version, that is a serious bugin the implementation.
Here is the definition of list::sort as perthe draft standards:
templateHere the only restriction on the Compare type is that it must havea publically visible function call operator [>class list{ // other stuff template void sort (Compare comp)};
operator ()()].
Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.























