bool convert(type const& t, json& j) { json::object o; o["name"] = t.name(); o["kind"] = to_string(which(t)); if (!visit(jsonizer{o["structure"]}, t)) return false; json::array a; std::transform(t.attributes().begin(), t.attributes().end(), std::back_inserter(a), [](auto& x) { return to_json(x); }); o["attributes"] = std::move(a); j = std::move(o); return true; }