Я обнаружил, что в следующем фрагменте кода
const int i = 2;
const int* ptr1= &i;
int* ptr2 = (int*)ptr1;
*ptr2 =3;
i
значение изменяется до 3. Что мне хотелось бы знать, почему это разрешено. Каковы ситуации, в которых это может стать полезным?