Is there a way / workaround for accessing non-static OuterClass members from a comparison function () operator?
There is. Just write a custom constructor for Compare, which accepts and stores the link to OuterClass, as follows:
struct Compare
{
Compare(OuterClass& o) : oc(o) { }
bool operator ()(const T&, const T&)
{
}
private:
OuterClass& oc;
};
, , - :
int main()
{
typedef std::set<T, Compare> MySet;
OuterClass oc;
MySet ms(Compare(oc));
}
: . . 23.2.4/3 ++ 11:
" " , , operator== . k1 k2 , comp, comp(k1, k2) == false && comp(k2, k1) == false. k1 k2 , comp(k1, k2) .