@cv_and_he is spot on; Live On Coliru
BOOST_FUSION_ADAPT_TPL_STRUCT ( (tree_type_t),
(simple_tree_t) (tree_type_t),
(tree_type_t, tree_data)
(typename std::vector < std::shared_ptr < tree_type_t > > , sub_tree) )