Boost logo

Boost Users :

Subject: Re: [Boost-users] [fusion] how to get the tuple of min values of 2 tuples whatever their length?
From: TONGARI J (tongari95_at_[hidden])
Date: 2013-07-17 08:10:12


2013/7/17 Frédéric Bron <frederic.bron_at_[hidden]>

> I have two tuples:
> typedef boost::tuple<double, int, std::string> Key;
> Key k1, k2;
>
> I would like to get the tuple of the min values for each corresponding
> value between k1 and k2:
> Key min=Key(std::min(k1.get<0>(), k2.get<0>()), std::min(k1.get<1>(),
> k2.get<1>()), std::min(k1.get<2>(), k2.get<2>()));
>
> but I do not know the length of the tuple so I am looking for a
> generic algorithm...
> Is this possible with boost::fusion or boost::mpl?
>

Probably like this:

    struct min_functor
    {
        template<class T>
        T operator()(T const& a, T const& b) const
        {
            return std::min(a, b);
        }
    };

    auto ret = fusion::transform(k1, k2, min_functor());
    fusion::copy(ret, min);

HTH



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net