class A{
const size_t number;
public:
A(size_t number): number(number) {}
void f(){
//read number, possibly save in CPU register
//call a function that the compiler can't inspect
// so it should assume that anything in the program state changed
//read number again
}
そこで、number
再度読み取る場合、コンパイラー(最適化がオンになっている場合)は変更できないと想定します。変更されているためconst
、CPUレジスターからフラグを読み取ります(以前にフラグが配置されていた場合)。