Boost logo

Boost Users :

From: Eoin (eoin-keyword-boostusers.07781a_at_[hidden])
Date: 2006-09-07 08:04:43


Ok, a solution finally! I figured that my use of make_recursive_variant
and recursive_variant_ was probably at fault as the variant in question
is reasonably large, the two recursive types effectively trebled the
size of its type description.

My solution instead was to use the recursive_wrapper as I show below. It
does work slightly differently, specifically you have to reference the
member vector or map and I am worried that I'm walking close to a
dangerous edge which ICE's could start happening again but the other
option is to write my own object hierarchy based solution which would be
much cruder.

Thanks Yan and Moshe for your suggestions I very much appreciate you
taking the time to think about this error.

Kind regards, Eoin.

struct param_vec;
struct param_map;

typedef boost::variant<
    int ,
    std::string,
    boost::posix_time::ptime,
    boost::recursive_wrapper<param_vec>,
    boost::recursive_wrapper<param_map>
> param;
   
struct param_vec
{
    param_vec() {}
    param_vec(std::vector<param> vec) : v(vec) {}
   
    std::vector<param> v;
};
struct param_map
{
    param_map() {}
    param_map(std::map<std::string, param> map) : m(map) {}
   
    std::map<std::string, param> m;
};


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