C++ 为什么';t boost::fusion::as_set是否从boost::fusion::vector中删除重复项?

C++ 为什么';t boost::fusion::as_set是否从boost::fusion::vector中删除重复项?,c++,boost,boost-fusion,C++,Boost,Boost Fusion,我有: 当我去调试时,我希望我的_set2只包含42和false,但是它包含了42两次。为什么会这样?如果是一套,那么“钥匙”肯定是唯一的?这是你的责任: 前提条件:可能没有重复的密钥类型 (from)好的,我刚问了一个我忘了问的小问题——一组存储排序的值。如果融合集包含不同的类型,比如一个int,然后是一个对一个对象的引用-它将如何根据内存地址对对象引用进行排序?它们只是没有排序。“与MPL中的关联序列一样,与STL中的关联容器不同,融合关联序列没有隐含的顺序关系。”(并且融合set定义为关联

我有:


当我去调试时,我希望我的_set2只包含42和false,但是它包含了42两次。为什么会这样?如果是一套,那么“钥匙”肯定是唯一的?

这是你的责任:

前提条件:可能没有重复的密钥类型


(from)

好的,我刚问了一个我忘了问的小问题——一组存储排序的值。如果融合集包含不同的类型,比如一个int,然后是一个对一个对象的引用-它将如何根据内存地址对对象引用进行排序?它们只是没有排序。“与MPL中的关联序列一样,与STL中的关联容器不同,融合关联序列没有隐含的顺序关系。”(并且融合
set
定义为关联序列)。混乱是可以理解的,因为它与STL的工作方式不同!好吧,我的困惑是,使用一个不能保证唯一性且不能对值排序的集合的目的是什么?(抱歉,不是无知,只是真正困惑)不确定?这个集合看起来确实有缺陷,但考虑到它必须支持异构数据类型的限制,它可能是他们所能做的最好的了。
auto my_vec2 = boost::fusion::make_vector(42,false,42);
auto my_set2 = boost::fusion::as_set(my_vec2);