По пятницам a specific problem, сам ответ и комментарии к нему, я хотел бы понять, если это правильное решение, обходное решение или взломать или просто неправильно.Строгое наложение указателя: есть доступ через «изменчивый» указатель/ссылку на решение?
В частности, я переписал код:
T x = ...;
if (*reinterpret_cast <int*> (&x) == 0)
...
как:
T x = ...;
if (*reinterpret_cast <volatile int*> (&x) == 0)
...
с volatile
классификатором к указателю.
Предположим, что обработка T
как int
в моей ситуации имеет смысл. Получает ли этот доступ через ссылку volatile
проблему сглаживания указателя?
Для справки, от спецификации:
[Примечание: летучее намек на реализацию, чтобы избежать агрессивной оптимизации с участием объекта, поскольку стоимость объекта может быть изменена при помощи определяется с помощью реализация. См. 1.9 для детальная семантика. В целом семантика летучий предназначены быть то же самое в C++, поскольку они находятся в С. - конец примечание]
EDIT:
Приведенный выше код сделал решить мою проблему, по крайней мере, на GCC 4.5 ,
Этот вопрос ** не ** ясно C++ специфический. Стили в стиле C++ могут быть тривиально переписаны в C. – curiousguy
@curiousguy C и C++ имеют разные языковые правила, однако –
@MattMcNabb Как различаются WRT 'volatile'? – curiousguy