(注:tupleおよびtieBoostまたはC ++ 11から取得できます。)厳密な弱い順序付けのように、すべての重要なものがそのデータ型に対してすでに行われているため
、2つの要素のみを含む小さな構造体を書き込むときstd::pair、operator<。
ただし、欠点は、ほとんど役に立たない変数名です。私がそれを作成したtypedefとしても、特に両方が同じタイプである場合は特に、2日後に何が何firstであったかsecond正確には覚えていません。これは、3つ以上のメンバーの場合はさらに悪化します。これは、入れ子にするpairことでほとんど問題になります。
そのための他のオプションはtuple、BoostまたはC ++ 11のいずれかからですが、実際には見た目が良く、明確ではありません。そこで、必要な比較演算子を含め、自分で構造体を書くことに戻ります。
特にはoperator<非常に扱いにくい場合があるので、次のように定義された操作に依存するだけで、この混乱全体を回避することを考えましたtuple。
の例operator<、例えば厳密な弱い順序付け:
bool operator<(MyStruct const& lhs, MyStruct const& rhs){
  return std::tie(lhs.one_member, lhs.another, lhs.yet_more) <
         std::tie(rhs.one_member, rhs.another, rhs.yet_more);
}
(tieは、渡された引数からtupleのT&参照を作成します。)  
編集:@DeadMGからプライベートに継承するという提案tupleは悪いことではありませんが、かなりの欠点がありました。
- 事業者が独立している場合(おそらく友人)、私は公に継承する必要があります
- キャストを使用すると、関数/演算子(operator=特に)を簡単にバイパスできます
- tie解決策により、注文に関係のない特定のメンバーを除外することができます
この実装に考慮する必要がある欠点はありますか?
tieビットフィールドメンバーに適用できないことです。
                tie(...)呼び出しがさまざまな演算子(=、==、<など)で複製される場合は、プライベートインラインメソッドmake_tuple(...)を記述してそれをカプセル化し、次のように他のさまざまな場所から呼び出すことができますreturn lhs.make_tuple() < rhs.make_tuple();(ただし、その方法は宣言するのが楽しいかもしれません!)
                auto tied() const{ return std::tie(the, members, here); }