Строгий псевдоним указателя: является ли доступ через «изменчивый» указатель / ссылку решением?

По пятамконкретная проблема, ответ на свой вопрос и комментарии к нему, я хотел бы понять, если это правильное решение, обходной путь / взломать или просто неправильно.

В частности, я переписал код:

T x = ...;
if (*reinterpret_cast <int*> (&x) == 0)
  ...

Как:

T x = ...;
if (*reinterpret_cast <volatile int*> (&x) == 0)
  ...

сvolatile квалификатор к указателю.

Давайте просто предположим, что лечениеT какint в моей ситуации есть смысл. Имеет ли это доступ черезvolatile Ссылка решить проблему с псевдонимом указателя?

Для справки, из спецификации:

[Примечание: volatile является подсказкой для реализации, чтобы избежать агрессивной оптимизации, связанной с объектом, потому что значение объекта может быть изменено средствами, не обнаруживаемыми реализацией. См. 1.9 для подробной семантики. В общем, семантика volatile должна быть такой же в C ++, как и в C. - примечание к концу]

РЕДАКТИРОВАТЬ:

Приведенный выше код действительно решил мою проблему по крайней мере на GCC 4.5.

Ответы на вопрос(2)

Ваш ответ на вопрос