template<class T>
class BST {
public:
inorderTraverse(void visit(T&)) const;
};
template<class KeyT, class ItemT>
class Entry {
ItemT item;
KeyT key;
};
template<class KeyT, class ItemT>
class Dictionary {
BST< Entry<KeyT, ItemT> > itemTree;
public:
traverse(void visit(ItemT&)) const;
};