Основных Templated Класса: Я хочу, чтобы иметь возможность взять экземпляр шаблонного класса, скажут:Назначения уникальных числовых идентификаторов экземпляров проблем
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, поскольку каждый элемент получает свой собственный уникальный идентификатор, но я думаю, что мне нужно иметь возможность изменять последовательность на месте, которая «вставляет» doesn ' т. е. делать.
Возможно, я подкрался к неправильному дереву. (С положительной стороны, dayum, но MPL!)
Цель:
Обновленное колесо на Signals & системы Sockets. Компоненты создают и регистрируют каналы с помощью «коммутатора», который будет использовать уникальные идентификаторы для размещения каналов на карте, что позволяет использовать универсальность во время выполнения. Я попытался найти библиотеку Qt в качестве примера, но я не могу разобрать их сокращения, и я думаю, что мне не хватает формального ноу-хау.
Спасибо!
Основная проблема заключается в том, что шаблоны могут быть созданы в разных единицах перевода. Поэтому во время компиляции невозможно присвоить уникальные номера - два TU могут быть скомпилированы одновременно на разных компьютерах! – MSalters
О, и основная проблема, похоже, не является основной проблемой - есть основная цель, которая фактически лучше решена другими способами. – MSalters