m
variant<Rectangle, Circle>
.Size: a a a
m
variant<Rectangle, Circle>
.АР
АР
m
struct IntersectVisitor {
bool operator()(Rect, Rect) { ... };
bool operator()(Rect, Circle) { ... };
bool operator()(Circle, Rect) { ... };
bool operator()(Circle, Circle) { ... };
};
bool isIntersecting = visit(IntersectVisitor{}, figureA, figureB);
NP
АР
struct IntersectVisitor {
bool operator()(Rect, Rect) { ... };
bool operator()(Rect, Circle) { ... };
bool operator()(Circle, Rect) { ... };
bool operator()(Circle, Circle) { ... };
};
bool isIntersecting = visit(IntersectVisitor{}, figureA, figureB);
АР
KO
NP
KO
VK
O
АР
KO
АР
АР
АР
KO
АР