Однако при использовании оценки во время компиляции указатель игра слов (переинтерпретация) типов не допускается из-за строгих псевдонимов и других ограничений.
Вот упрощенный пример, иллюстрирующий проблему:
Код: Выделить всё
template
constexpr size_t hash(const T& value) {
const unsigned char* byte_ptr = reinterpret_cast(&value); // NOT allowed.
size_t hash = 0;
for (size_t i = 0; i < sizeof(T); ++i) {
hash ^= byte_ptr[i];
}
return hash;
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... ntext-in-c
Мобильная версия