Посмотрите еще раз на документацию .
Список типов T1, T2, T3, ..., TN
, используемых для построения набора, не должен содержать дубликатов.(Или иначе: конструкция set<T1, T2, ..., TN>
имеет четко определенное значение, только если T1, T2, T3, ..., TN
не содержит дубликатов).
Позже в документации приведен примерчтобы создать набор из списка элементов, который может содержать дубликаты:
typedef fold<
vector<long,float,long>
, set0<>
, insert<_1,_2>
>::type s;
BOOST_MPL_ASSERT_RELATION( size<s>::value, ==, 2 );
Инварианты набора применяются только при использовании интерфейса набора для создания набора.