Where do you need to derive from these in order to use the STL? I think they are just a handy way to create the correct typedef's in your function objects that will be used by template functions. You could just as well provide the typedef's yourself and remove the inheritance of std::unary_function or std::binary_function.

