Я хотел бы использовать какое-то сопоставимое представление типа, которое не является прямым, как std :: is_same <> и не использует RTTI. Макрос __PRETTY_FUNCTION__
дает одну и ту же строку для 2 разных классов с одинаковыми именами, определенными в разных файлах .cpp в анонимных пространствах имен, и сравнение строк выполняется медленно.
Давайте рассмотрим такой кусок кода:
template<typename T>
void func() {}
int main() {
std::cout << reinterpret_cast<size_t>(&func<int>) << std::endl;
std::cout << reinterpret_cast<size_t>(&func<float>) << std::endl;
}
- Хорошо ли хранится числовое значение указателя на специализированную функцию шаблона? Он не будет нигде называться.
- Будет ли оно иметь одинаковое значение в разных файлах .cpp для одной и той же специализации?
- Будет ли оно иметь одинаковое значение между динамически связанными библиотеками - возможно, нет?