typedef std::map<mcl::ptr<Island>, mcl::ptr<Node> > Node;
which of course didn't compile. (mcl::ptr is a smart pointer).
So I found a way around it:
class Node2;
typedef std::map<mcl::ptr<Island>, mcl::ptr<Node2> > Node;
typedef std::map<mcl::ptr<Island>, mcl::ptr<Node> > Node2;
Is it valid C++? It compiles under my compiler, but is it portable?
PS. I know I can use a struct.