I've had this same pattern come up 4 or 5 times now, and each time I've been unable to find a stl + boost solution that allowed me to do what I want without writing my own less function.  Basically, I want something that will let me do a sort, or define a map on structs or pairs without writing a less that compares the member variable or .first.  My last attempt:

 

vector<pair<float, float>> myVector

std::sort(myVector.begin(), myVector.end(), _1.first < _2.first);

 

No such luck.  It looks like I can do operator * and & on lambda objects, but not access members through them.  Is there anything in boost, stl, or elsewhere that lets me not write this:

 

class myLess

{

    bool operator() (pair<float, float> a, pair<float, float>b)

        {return a.first < b.first;}

}

 

Thanks for any help,

Chris