inline std::vector<int> _autorange_workers(const alps::mpi::communicator &comm, bool include_boss) {
    std::vector<int> out;
    size_t Nprocs(comm.size() - !include_boss);
    if (!Nprocs) throw (std::logic_error("No workers to evaluate"));
    for (size_t p = 0; p < comm.size(); p++) {
        if (include_boss || comm.rank() != p) {
            out.push_back(p);
        };
    };
    return out;
}