одинаковые значения, но только в релизной сборке с клангом, пропатченным одной японской компанией? Это баг компилятора, или код содержит УБ?
template <class T>
inline void * const tagger{nullptr};
enum class Tag : uintptr_t {};
template <class T>
inline Tag tag_for()
{
return static_cast<Tag>(bit_cast<uintptr_t>(&tagger<T>));
}
любопытно, а если const убрать?
Разве значения енума которые вне его определения - не уб?
ну он имеет право по идее
а чем не нравится https://en.cppreference.com/w/cpp/types/type_info/hash_code ?
typeid может вернуть разное для одних и тех же типов внутри одной программы емнип
У нас геймдев, RTTI нету. Хотя возможно оно и без RTTI работает?..
Апдейт по вот этой хрени: японский линковщик действительно дедуплицирует константные символы с опцией --strip-unused-data --strip-duplicates, даже если у них берется адрес. Убрав const с tagger, линкер перестал шалить. Ох уж эти японцы... не идите дети в геймдев :) (шучу, идите, мы нанимаем)
Смотри большая Н засудит за разглашение приколов)
А маленькой С насрать)) сорри за оффтоп
Обсуждают сегодня