Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Beginner
Jul 18, 1997



Building the Right Environment to Support AI, Machine Learning and Deep Learning

VC++ 5.0 and STL predicates

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 greater but in stepping through the code in the debugger, I noticed that my function object is cast to a base class (std::binary_function) that has a non-virtual operator() method so my operator() never gets called. Am I missing something?

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 the comparator to the base class' version, that is a serious bug in the implementation.

Here is the definition of list::sort as per the draft standards:

template  >
class list
 // other stuff

 template  void sort (Compare comp)
Here the only restriction on the Compare type is that it must have a publically visible function call operator [operator ()()].
DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date