class BinaryOp : public IUncertain {
protected:
UncertainPtr left,right;
public:
BinaryOp(UncertainPtr const & l,
UncertainPtr const & r) : left(l), right(r) {}
virtual void dependsOn(Set & s) const {
// set<> automatically avoids duplicating elements
left->dependsOn(s);
right->dependsOn(s);
}
};