[
Note 5: 
volatile is a hint to the implementation to avoid aggressive
optimization involving the object because the value of the object might
be changed by means undetectable by an implementation
.  Furthermore, for some implementations, 
volatile might indicate that
special hardware instructions are required to access the object
.In general, the
semantics of 
volatile are intended to be the same in C++ as
they are in C
. — 
end note]