In C++ le cose cambiano con l'overload degli operatori. Anche se questo compila dio sa cosa fa.
struct _b
{
_b operator +(const _b & rhs) const
{
_b b_ = rhs;
return b_;
}
};
struct _x
{
_b operator [](const _b & rhs)
{
return rhs;
}
_x operator =(const _b & rhs)
{
return *this;
}
};
struct _y
{
_x x;
_x operator [](const _x & rhs)
{
return rhs;
}
};
int main()
{
struct _y y;
struct _x x;
struct _b b;
y[y.x] = b + x[b];
return 0;
}
Questo per quanto riguarda la prima. La seconda lo fai te.