Основная проблема:
Я хочу иметь возможность взять экземпляр шаблонного класса, скажем:
template<class a, class b, class c> class foo;
foo<int, float, double>;
и затем сделайте что-то вроде:
foo<int, float, double>::value; //Evaluates to a unique number
foo<long, float, double>::value; //Evaluates to a different unique number
foo<int, float, double>::value; //Evaulates to the same unique number
За исключением, на самом деле, это:
template<class a, class b, class c>
int getUniqueIdentifier()
{
return foo<a, b, c>::value;
}
Текущая попытка решения:
Я думаю, что хочу использовать «Расширяемую ассоциативную последовательность» Boost :: MPL, так как каждый элемент получает свой уникальный идентификатор, но я думаю, что мне нужно иметь возможность изменять последовательность на месте, чего «вставка» не делает .
Я могу лаять не на то дерево. (С положительной стороны, дайум, но MPL!)
Назначение:
Изобретая колесо в системе «Сигналы и розетки». Компоненты создают и регистрируют каналы с помощью «коммутатора», который использует уникальные идентификаторы для размещения каналов на карте, что обеспечивает универсальность во время выполнения. Я попытался найти библиотеку Qt в качестве примера, но я не могу разобрать их сокращения, и мне кажется, что мне не хватает формального ноу-хау.
Спасибо!