我想用boost::assign
來模擬包含std::set
的std::map
的C++ 11初始化。如預期使用boost :: assign與嵌套在std :: map中的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));
的使用boost::assign::list_of
作品std::set
初始化單獨使用時,但是當我嘗試上面的代碼分配是不確定的,其中std::set
的構造函數調用點:
map-assign.cpp:16: instantiated from here
include/c++/4.4.6/bits/stl_pair.h:101: error: call of overloaded set(const boost::assign_detail::generic_list<int>&) is ambiguous
include/c++/4.4.6/bits/stl_set.h:188: note: candidates are:
std::set<_Key, _Compare, _Alloc>::set(
const std::set<_Key, _Compare, _Alloc>&)
[with _Key = unsigned int, _Compare = std::less<unsigned int>, _Alloc = std::allocator<unsigned int>]
include/c++/4.4.6/bits/stl_set.h:145: note:
std::set<_Key, _Compare, _Alloc>::set(
const _Compare&, const _Alloc&)
[with _Key = unsigned int, _Compare = std::less<unsigned int>, _Alloc = std::allocator<unsigned int>]
如何解決此歧義錯誤?
是否'LIST_OF(10U)(20U)(30U)'幫助呢? – aschepler