2013-12-17 4 views
3

у меня есть:Почему не boost :: fusion :: as_set удалить дубликаты из boost :: fusion :: vector?

auto my_vec2 = boost::fusion::make_vector(42,false,42); 
auto my_set2 = boost::fusion::as_set(my_vec2); 

и когда я иду, чтобы отладить я ожидал my_set2 содержать только 42 и ложным, однако она содержала 42 дважды. Почему это? Если его набор, безусловно, «ключи» должны быть уникальными?

ответ

5

Это ваша ответственность:

Предпосылка: Там не может быть никаких повторяющихся ключевых типов.

(от this doc)

+0

Ok только что получил один маленький вопрос я забыл задается вопрос набор магазинов отсортированные значения. Если набор слияния содержит разные типы, скажем, int, а затем ссылку на объект, как бы он сортировал ссылку на объект, на основе адреса памяти? – user997112

+1

Они просто не отсортированы. «Подобно ассоциативным последовательностям в MPL, и в отличие от ассоциативных контейнеров в STL, ассоциативные последовательности Fusion не имеют подразумеваемого отношения упорядочения» (и Fusion 'set' определяется как ассоциативная последовательность). Путаница понятна, потому что она работает иначе, чем STL! – Nate

+0

Хорошо, так что мое замешательство таково: в чем цель использования набора, который не гарантирует уникальность и не сортирует значения? (Извините, не будучи невежественным, просто искренне озадаченным) – user997112

 Смежные вопросы

  • Нет связанных вопросов^_^