How does the C++ const guarantee apply to parameters with overlapping memory?
Which parts of this (if any) break the C++ const keyword guarantee? Why?
struct A {
int x{};
int *yPtr;
};
struct ContainsA {
A a{};
int y{};
};
int Func1(const ContainsA &containsA, A &a) {
++a.x;
++(*a.yPtr);
return containsA.a.x + containsA.y;
}
int Func2(ContainsA &containsA) {
containsA.a.yPtr = &containsA.y;
Func1(containsA, containsA.a);
}