Listing 1

typedef std::set<class ILeaf const *> Set;
class IUncertain {
public:
   virtual ~IUncertain() {}
   virtual double value() const = 0;
   virtual double uComponent(ILeaf const *) const = 0;
   virtual void dependsOn(Set&) const = 0;
};
typedef boost::shared ptr<const IUncertain> UncertainPtr;