Допустим, есть некоторый, жестко заданный, набор уникальных идентефикаторов, представленный в виде перечисления:
enum SomeSet
{
id1=0,
id2,
//...
idN,
max_id //обязательно присутствует, как ограничение
};
Допустим, я хочу привязать к этому набору, какие-то данные, например указатели на функции или интерфейсы, и потом удобно получать эти данные по идентефикатору. Для этого я кладу в std::map такие вот пары: pair<SomeSet,SomeData>, в общем обычная ситуация, имхо.
А теперь допустим я хочу класть в map не отдельные идентефикаторы, а непересекающиеся подмножества всего набора идентефикаторов и потом получать данные из map по одному идентефикатору из этого набора. Хотелось бы, чтобы все необходимое хранилось в ключе map, понятно что надо как-то определить для него класс с оператором сравнения, и парой конструкторов, один из который принимает (и запоминает) подмножество идентефикаторов а другой — отдельный идентефикатор. Но чето в голову не приходит как потом сравнивать эти ключи.
Или может меня не в ту сторону занесло?