Итак, этот вопрос задан раньше, но я хотел задать вопрос с некоторыми из этих ключевых слов в названии.Уникальный идентификатор номера для шаблона с использованием функционального адреса
Проблема проста: как я могу иметь шаблонный класс, такой, что для каждого экземпляра шаблона, но не для каждого экземпляра класса, существует уникальный, числовой идентификатор?
То есть, способ дифференцировать:
foo<int> f1;
foo<char> f2;
classID(f1) != classID(f2);
но,
foo<int> f3;
foo<int> f4;
classID(f3) == classID(f4);
по теме:
in C++, how to use a singleton to ensure that each class has a unique integral ID?
Assigning Unique Numerical Identifiers to Instances of a Templated Class
Я выбрал свой собственный ответ, потому что это) проще и б) статическое время компиляции постоянная , насколько мне известно. – Narfanator
Я тестировал это с VS 2015, и он работает при компиляции для Debug, но не при компиляции для Release. При компиляции для Release оптимизатор объединяет все функции classID() в один. Итак, foo.classID == foo2.classID == foo3.classID. – adigostin
Черт. Нужно найти новый трюк, теперь ... – Narfanator