Listing 9


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