Boost logo

Boost Users :

Subject: Re: [Boost-users] [variant][mpl] silly mistake in make_variant_over usage?
From: Agustín K-ballo Bergé (kaballo86_at_[hidden])
Date: 2015-08-28 21:47:42


On 8/28/2015 10:35 PM, Nat Goodspeed wrote:
> The following program fails to compile (148 lines of errors, will
> paste on request) with
> g++ (Ubuntu 4.9.2-0ubuntu1~14.04) 4.9.2 in -std=c++11 mode.
>
> This is using Boost 1.59.0. Command line:
>
> g++ -std=c++11 -I ~/boost_1_59_0 -o make_variant make_variant.cpp
>
> I assume I'm making a simple error. I would appreciate your pointing
> it out. Thank you!
>
> (Is there a simpler way to obtain a variant of the result types of
> passed functions? I was hoping I could just write: boost::variant<
> std::result_of<Fns>::type... >.)

This seems to work:

     typedef typename boost::make_variant_over<
         boost::mpl::vector<
             typename std::result_of<Fns()>::type...> >::type return_t;

So probably this would to:

     typedef boost::variant<
         typename std::result_of<Fns()>::type...> >::type return_t;

Except that the last one might be problematic with repeated return
types. The documentation would know for sure.

Regards,

-- 
Agustín K-ballo Bergé.-
http://talesofcpp.fusionfenix.com

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