Actually what volatile does is more like forces the compiler to allocate ordinary memory for a variable and to assume nothing when working with the variable. const volatile is really only used for cute little examples in programming forms.
for example
Code:
const int i = 6;
const_cast<int &>(i)=9;
std::cout << "i=" << i << std::endl;
is allowed to output "i=6" as the const has told the compiler that it can assume that there will be a 6 wherever "i" appears.
Code:
const volatile int i = 6;
const_cast<int &>(i)=9;
std::cout << "i=" << i << std::endl;
is requred to output "i=9"