in nest/nest/nest.h [170:194]
Nest pack_as(InputIt *first, const InputIt &last) const {
return std::visit(
overloaded{[&first, &last](const T &) {
if (*first == last)
throw std::out_of_range("Too few elements in sequence");
return Nest(*(*first)++);
},
[&first, &last](const std::vector<Nest> &v) {
std::vector<Nest> result;
result.reserve(v.size());
for (const Nest &n : v) {
result.emplace_back(n.pack_as(first, last));
}
return Nest(result);
},
[&first, &last](const std::map<std::string, Nest> &m) {
std::map<std::string, Nest> result;
for (auto &p : m) {
result.emplace_hint(result.end(), p.first,
p.second.pack_as(first, last));
}
return Nest(result);
}},
value);
}