C++ 使用boost::assign和嵌套在std::map中的std::set

C++ 使用boost::assign和嵌套在std::map中的std::set,c++,boost,C++,Boost,我试图使用boost::assign来模拟包含std::set的std::map的C++11初始化 #include <set> #include <map> #include <stdint.h> #include <boost/assign/list_of.hpp> typedef std::map< uint32_t, std::set< uint32_t> > the_map_t; the_map_t data

我试图使用
boost::assign
来模拟包含
std::set
std::map
的C++11初始化

#include <set>
#include <map>
#include <stdint.h>

#include <boost/assign/list_of.hpp>

typedef std::map< uint32_t, std::set< uint32_t> > the_map_t;

the_map_t data = boost::assign::map_list_of( 1, boost::assign::list_of(10)(20)(30) )
                                           ( 2, boost::assign::list_of(12)(22)(32) )
                                           ( 3, boost::assign::list_of(13)(23)(33) )
                                           ( 4, boost::assign::list_of(14)(24)(34) );

如何解决此歧义错误?

在这种情况下,的
boost::assign::map\u list\u需要第二个模板参数的提示-
。所以线

the_map_t data = boost::assign::map_list_of(...);
变成

the_map_t data = boost::assign::map_list_of<uint32_t, std::set< uint32_t> >(...);
的映射数据=boost::assign::map\u list\u>(…);

是否列出了(10U)(20U)(30U)
帮助?欢呼声虽然有效,但我相信已经发现了
boost::assign中的一个bug,请参阅:。
the_map_t data = boost::assign::map_list_of<uint32_t, std::set< uint32_t> >(...);