template <typename M, typename T, typename S, typename E> gf<M, real_target_t<T>, S> real(gf<M, T, S, E> const &g) { return {g.mesh(), real(g.data()), g.singularity(), g.symmetry(), {}, {}}; }
gf<block_index,std14::result_of_t<F(G)>> map(F && f, gf<block_index,G> const & g) { return make_block_gf(map(f, g.data())); }
/// Build the block function made of f(b) if b are the blocks of g template <typename F, typename G> gf<block_index, std14::result_of_t<F(G)>> map(F &&f, gf<block_index, G> const &g) { return make_block_gf(get_block_names(g), _map(f, g.data())); }