как исправить предупреждение о перфорированном указателе

У меня есть следующее: (HalfType = 32bit, Type = 64bit)

inline static HalfType getGroupNr(const Type & id){
Type id2 = id;
id2 >>= sizeof(HalfType)*8;
HalfType a = reinterpret_cast<HalfType &>(id2);
return a;
};

Это должно извлечь последние 32-битные из 64-битного ввода id и вернуть эти 32 бита.

Как мне исправить это предупреждение:

dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]

И какова точная проблема в приведенном выше коде и будет использовать объединение для id типа будет лучше? (Как?)

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]