You can edit your prefer type generalize oder
typedef boost::mpl::vector<int,boost::rational<int>,float,double,long
double,std::complex<double>,std::complex<long double> >::type
ordered_number_types;
=>
typedef boost::mpl::vector<bool,char,int,boost::rational<int> >::type
ordered_number_types;