Почему можно изменять члены класса в константных функциях?
Почему этот код компилируется, т.е. почему можно изменять члены в константных функциях? Ведь это предотвращает кучу оптимизаций, связанных с константностью.
struct A {
int x = 42;
int* y = &x;
constexpr int foo() const {
return ++(*y);
}
};
static_assert(A{}.foo() == 43);
Источник: Stack Overflow на русском