比較関数演算子 () 内から OuterClass の非静的メンバーにアクセスする方法/回避策はありますか?
がある。Compare次のように、への参照を受け入れて格納するためのユーザー定義のコンストラクターを作成するだけOuterClassです。
struct Compare
{
    Compare(OuterClass& o) : oc(o) { }
    bool operator ()(const T&, const T&)
    {
        // Uses oc somehow...
    }
private:
    OuterClass& oc;
};
次に、セットを作成するときに、次のようなことができます。
int main()
{
    typedef std::set<T, Compare> MySet;
    OuterClass oc; // <== Construct an object of type Outerclass somehow...
    MySet ms(Compare(oc)); // <== Construct your comparator and pass it
                           //     in input to the constructor of std::set
}
ただし、注意してください: 順序付け基準は安定している必要があります。要素は、同じセットに対して常に同じものを比較する必要があります。C++11 標準のパラグラフ 23.2.4/3 によると:
  「キーの等価性」という語句は、キーではなく、比較によって課せられる等価関係を意味
  operator==します。つまり、2 つのキーk1とk2は、比較対象comp,の場合、同等と見なされますcomp(k1, k2) == false && comp(k2, k1) == false。同じコンテナー内の任意の 2 つのキー k1 と k2 について、呼び出しcomp(k1, k2)は常に同じ値を返します。