c++ - define a custom Compare for multiset -


function<bool(const pair<int, int>&, const pair<int, int>&)> cmp = [](const pair<int, int> & left, const pair<int, int> & right){if(left > right) return true;};  //multiset<pair<int, int>, function<bool(const pair<int, int>&, const pair<int, int>&)> mt(cmp); multiset<pair<int, int>, decltype(cmp)> mt1(cmp);  cout<<typeid(decltype(cmp)).name()<<endl<<typeid(cmp).name()<<endl; 

the comment code(mt) make error whereas line below(mt1) won't.

i tried cout name of 2 type , same.

besides, tried this:

multiset<pair<int, int>, const function<bool(const pair<int, int>&, const pair<int, int>&) &> mt(cmp); 

or

multiset<pair<int, int>, function<bool(const pair<int, int>&, const pair<int, int>&) &> mt(cmp); 

all of them don't work.

so type of second argument exactly? if don't use decltype, how can declare it?

look @ code, lost >.

multiset<pair<int, int>, function<bool(const pair<int, int>&, const pair<int, int>&)>> mt(cmp); //                                                                                   ~ 

using decltype should idea.

btw: should return when if returns false in lambda. or return left > right;.


Comments