How does the C++ const guarantee apply to parameters with overlapping memory?
14:58 06 Nov 2025

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);
}
c++