Original Post
I tried to make:
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.