I’ve never really thought about this before, but constvolatile value types don’t really make sense, do they? constvolatilepointers make sense, since const pointers can point to non-const values, but constvalues are typically placed in read-only memory, in which case the volatile is kind of meaningless, no?
That seems like a better fit for an intrinsic, doesn’t it? If it truly is a register, then referencing it through a (presumably global) variable doesn’t semantically align with its location, and if it’s a special memory location, then it should obviously be referenced through a pointer.
Maybe there’s a signal handler or some other outside force that knows where that variable lives on the stack (maybe through DWARF) and can pause your program to modify it asynchronously. Very niche. More practical is purely to inhibit certain compiler optimizations.
I’ve never really thought about this before, but
const volatile
value types don’t really make sense, do they?const volatile
pointers make sense, sinceconst
pointers can point to non-const
values, butconst
values are typically placed in read-only memory, in which case thevolatile
is kind of meaningless, no?They do in embedded when you are polling a read only register. The cpu can change the register but writing to it does nothing.
That seems like a better fit for an intrinsic, doesn’t it? If it truly is a register, then referencing it through a (presumably global) variable doesn’t semantically align with its location, and if it’s a special memory location, then it should obviously be referenced through a pointer.
Maybe there’s a signal handler or some other outside force that knows where that variable lives on the stack (maybe through DWARF) and can pause your program to modify it asynchronously. Very niche. More practical is purely to inhibit certain compiler optimizations.