#include <iostream>
typedef struct A
{
int x;
int y;
} *PA;
class B
{
public:
B(PA pa):m_pa(pa){}
int getPa() const{return m_pa->x;}
private:
PA m_pa;
};
void func(const B& b)
{
std::cout << b.getPa();
}
int main()
{
A a = {5,7};
PA pA = &a;
func(pA); //Why does this compile and what is the outcome??
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdHlwZWRlZiBzdHJ1Y3QgQQp7CiAgICBpbnQgeDsKICAgIGludCB5Owp9ICpQQTsKCmNsYXNzIEIKewogICAgcHVibGljOgogICAgICAgIEIoUEEgcGEpOm1fcGEocGEpe30KICAgICAgICBpbnQgZ2V0UGEoKSBjb25zdHtyZXR1cm4gbV9wYS0+eDt9CiAgICBwcml2YXRlOgogICAgICAgIFBBIG1fcGE7Cn07Cgp2b2lkIGZ1bmMoY29uc3QgQiYgYikKewogICAgc3RkOjpjb3V0IDw8IGIuZ2V0UGEoKTsKfQoKaW50IG1haW4oKQp7CiAgICBBIGEgPSB7NSw3fTsKICAgIFBBIHBBID0gJmE7CgogICAgZnVuYyhwQSk7ICAgICAgIC8vV2h5IGRvZXMgdGhpcyBjb21waWxlIGFuZCB3aGF0IGlzIHRoZSBvdXRjb21lPz8KICAgIHJldHVybiAwOwp9