我正在尝试使用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
如何解决这种歧义错误?
答案 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> >(...);