Я использую код, в котором приведу enum * к int *. Примерно так:
enum foo { ... }
...
foo foobar;
int *pi = reinterpret_cast<int*>(&foobar);
При компиляции кода (g ++ 4.1.2) я получаю следующее предупреждающее сообщение:
dereferencing type-punned pointer will break strict-aliasing rules
Я погуглил это сообщение и обнаружил, что это происходит только тогда, когда включена строгая оптимизация псевдонимов. У меня есть следующие вопросы:
И да, я на самом деле нужен такой вид алиасинга.