void decode_distribution(distribution_type d, hwloc_topology& t,
        std::vector<mask_type>& affinities,
        std::size_t used_cores, std::size_t max_cores,
        std::vector<std::size_t>& num_pus, error_code& ec)
    {
        switch (d) {
        case compact:
            decode_compact_distribution(t, affinities, used_cores, max_cores,
                num_pus, ec);
            break;

        case scatter:
            decode_scatter_distribution(t, affinities, used_cores, max_cores,
                num_pus, ec);
            break;

        case balanced:
            decode_balanced_distribution(t, affinities, used_cores, max_cores,
                num_pus, ec);
            break;

        default:
            HPX_ASSERT(false);
        }
    }
    void decode_distribution(distribution_type d, hwloc_topology& t,
        std::vector<mask_type>& affinities, error_code& ec)
    {
        switch (d) {
        case compact:
            decode_compact_distribution(t, affinities, ec);
            break;

        case scatter:
            decode_scatter_distribution(t, affinities, ec);
            break;

        case balanced:
            decode_balanced_distribution(t, affinities, ec);
            break;

        default:
            BOOST_ASSERT(false);
        }
    }