Use strict-aliasing rule for the type punning cases in which RegionStore is able to get a stored value of a constant array through a pointer of inappropriate type. Adjust RegionStoreManager::getBindingForElement to the C++20 Standard.
Example:
const int arr[42] = {1,2,3}; int x1 = ((unsigned*)arr)[0]; // OK int x2 = ((short*)arr)[0]; // UB int x3 = ((char*)arr)[0]; // OK int x4 = ((char*)arr)[1]; // UB
This is basically the strict-aliasing rule, we could probably mention this.
Although, I don't mind the current name.
You probably know about it, but Shafik made a fancy GitHub Gist about it.
The only thing I missed was checking type similarity according to basic.lval, but I'm not exactly sure if we should check that here.