У меня есть шаблон, который создает уникальный идентификатор для каждого экземпляра типа. Вот упрощенная версия шаблона:
template <typename T>
class arType {
static const arType Id; // this will be unique for every instantiation of arType<>.
}
// Address of Id is used for identification.
#define PA_TYPE_TAG(T) (&arType<T >::Id)
Это работает, когда у вас есть исполняемый файл, состоящий исключительно из статических библиотек. К сожалению, мы переходим к исполняемому файлу, состоящему из dll. Каждая DLL потенциально может иметь свою собственную копию идентификатора для типа.
Одним из очевидных решений является явное создание экземпляров всех экземпляров arType. К сожалению, это громоздко, и я хотел бы спросить, может ли кто-нибудь предложить лучшее решение?