
i.e. the example for mpl::unique shows: typedef vector<int,float,float,char,int,int,int,double> types; typedef vector<int,float,char,int,double> expected; typedef unique< types, is_same<_1,_2> >::type result; BOOST_MPL_ASSERT(( equal< result,expected > )); note that type "expected" : typedef vector<int,float,char,int,double> expected; still has TWO ints in it. I am looking for a way to basically do this: typedef vector<int,float,float,char,int,int,int,double> types; typedef vector<int,float,char, double> expected; typedef unique_all< types, is_same<_1,_2> >::type result; BOOST_MPL_ASSERT(( equal< result,expected > )); (note the examples I am using use integral types, in my situation I am not using integral types) I dug through the archives and found a few mentions of people asking this question and talking about it- but no substantial solution. any help appreciated Thanks Brian :)