diff -Naur fam-2.6.10/fam/SmallTable.h fam-2.6.10.new/fam/SmallTable.h
--- fam-2.6.10/fam/SmallTable.h 2003-04-15 06:21:43.000000000 +0200
+++ fam-2.6.10.new/fam/SmallTable.h     2004-05-31 17:46:03.835793656 
+0200
@@ -98,7 +98,7 @@
 }

 template <class Tkey, class Tvalue>
-SmallTable<Tkey, Tvalue>::Closure
+typename SmallTable<Tkey, Tvalue>::Closure
 SmallTable<Tkey, Tvalue>::position(const Tkey& key) const
 {
     unsigned l = 0, r = n;
diff -Naur fam-2.6.10/include/BTree.h fam-2.6.10.new/include/BTree.h
--- fam-2.6.10/include/BTree.h  2003-04-15 06:21:19.000000000 +0200
+++ fam-2.6.10.new/include/BTree.h      2004-05-31 17:45:37.356819072 
+0200
@@ -236,7 +236,7 @@
 //  to the right and returns them.

 template <class Key, class Value>
-BTree<Key, Value>::Closure
+typename BTree<Key, Value>::Closure
 BTree<Key, Value>::Node::remove(unsigned j)
 {
     Key k = key[j];
@@ -348,7 +348,7 @@
 }

 template <class Key, class Value>
-BTree<Key, Value>::Closure
+typename BTree<Key, Value>::Closure
 BTree<Key, Value>::Node::next(const Key& pred) const
 {
     if (!this)
@@ -404,7 +404,7 @@
 //  nodes as necessary on the way back.

 template <class Key, class Value>
-BTree<Key, Value>::Closure
+typename BTree<Key, Value>::Closure
 BTree<Key, Value>::insert(Node *p, const Key& key, const Value& value)
 {
     if (!p) return Closure(key, value, NULL);
@@ -499,7 +499,7 @@
 //  Returns UNDER if node p is too small afterward, OK otherwise.

 template <class Key, class Value>
-BTree<Key, Value>::Status
+typename BTree<Key, Value>::Status
 BTree<Key, Value>::underflow(Node *p, unsigned i)
 {
     assert(p);
@@ -557,7 +557,7 @@


 template <class Key, class Value>
-BTree<Key, Value>::Closure
+typename BTree<Key, Value>::Closure
 BTree<Key, Value>::remove_rightmost(Node *p)
 {
     int i = p->n;
@@ -587,7 +587,7 @@
 //  back up.

 template <class Key, class Value>
-BTree<Key, Value>::Status
+typename BTree<Key, Value>::Status
 BTree<Key, Value>::remove(Node *p, const Key& key)
 {
     if (!p)

