Avoiding Helper Functions for Doing Comparisons
===

Say I have a type with a member function:

    class Thing {
        std::string m_name;
    public:
        std::string & getName() {
            return m_name;
        }
    };

And say I have a collection of that type:

    std::vector<Thing> things;

And I want to keep the things in order by name. To do that, I use std::lower_bound to figure out where to put it:

    bool thingLessThan(Thing const& thing, std::string const& name) {
        return thing.getName() < name;
    }
    
    void addThing(std::string const& name) {
        vector<Thing>::iterator position = lower_bound(
            things.begin(), things.end(),
            name,
           thingLessThan);
        if (position == things.end() || position->getName() != name) {
            position = things.insert(position, Thing());
            position->getName() = name;
        }
    }

Is there a way to do the same thing as the `thingLessThan` function without actually creating a function, perhaps using std::mem_fun, std::less, etc?