Интересно, позволяет ли какое-либо средство метапрограммирования шаблонов присваивать уникальные интегральные идентификаторы для разных типов, например, что-то вроде этого:
class Type;
enum { id = identifier<Type>() /* or identifier<Type>::id, ... */ };
static_assert(id == identifier<Type>(), "...");
Сложная часть, я думаю, заключается в том, что идентификатор должен оставатьсято же самое в одной и той же компиляции (что не обязательно то же самое, что и единица компиляции).Но, конечно, поскольку я не знаю технику или, если это вообще возможно, я действительно не знаю , что самое сложное.
Редактировать: Как насчет одного модуля компиляции?