$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] variant with shrink
From: Niitsuma Hirotaka (hirotaka.niitsuma_at_[hidden])
Date: 2013-03-03 02:13:38
boost::variant should be
variant<int,int>
=> int
variant<int,double>
=> double
variant<int,boost::rational<int> >
=> boost::rational<int>
variant<int,double,std::string>
=> variant<double,std::string>
I wrote such extension
https://github.com/niitsuma/variant_shrink
Default generalize order is
int < boost::rational<int> < float < double < std::complex<double>
You can use other custom generalize relation by defining function object
is_generalizable_to<Type,TypeTo>