static void call(utree& ut) { if (!detail::is_list(ut)) { if (detail::is_uninitialized(ut)) ut = empty_list; else { utree retval (empty_list); retval.push_back(ut); ut.swap(retval); } } }
static bool call(utree& c, T const& val) { switch (traits::which(c)) { case utree_type::invalid_type: case utree_type::nil_type: case utree_type::list_type: c.push_back(val); break; default: { utree ut; ut.push_back(c); ut.push_back(val); c.swap(ut); } break; } return true; }