devxlogo

VC++ 5.0 and STL predicates

VC++ 5.0 and STL predicates

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 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?

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:

template  >class list{  // other stuff template  void sort (Compare comp)};
Here the only restriction on the Compare type is that it must havea publically visible function call operator [operator ()()].

See also  Comparing different methods of testing your Infrastructure-as-Code
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist