For one of my projects, what I really wanted to do was this (simplifying it to the bare minimum);
struct Move { int src; int dst; }; struct MoveTree
Use a pointer to the type in the Vector, this will be portable.
struct Move { int src; int dst; }; struct MoveTree; struct MoveTree { Move move; std::vector variation; };