Take another look at the documentation .
The list of types T1, T2, T3, ..., TNused to build the set must not contain duplicates. (Or else - the design set<T1, T2, ..., TN>has only a certain value, if it T1, T2, T3, ..., TNdoes not contain duplicates).
Later in the documentation there is an example of how to build a set from a list of elements that may contain duplicates:
typedef fold<
vector<long,float,long>
, set0<>
, insert<_1,_2>
>::type s;
BOOST_MPL_ASSERT_RELATION( size<s>::value, ==, 2 );
, .