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

时间:2012-10-29 16:40:04

标签: c++ boost

我正在尝试使用boost::assign来模拟包含std::map的{​​{1}}的C ++ 11初始化。

std::set

使用#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) ); std::set的初始化在单独使用时按预期工作,但是当我尝试上面的代码时,boost::assign::list_of的构造函数所在的赋值是不明确的称为:

std::set

如何解决这种歧义错误?

1 个答案:

答案 0 :(得分:2)

在这种情况下,boost::assign::map_list_of需要提示第二个模板参数 - <uint32_t, std::set< uint32_t> >。因此行

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

变为

the_map_t data = boost::assign::map_list_of<uint32_t, std::set< uint32_t> >(...);