【发布时间】:2012-03-08 17:37:35
【问题描述】:
我想使用boost::bind 创建一个boost::function,将一个新的键值对插入boost::unoredered_map,但编译错误很少。
typedef boost::unordered_map<
std::string, std::string > dict_type;
inline void insert( const std::string& key, const std::string& value ){
typedef std::pair<dict_type::iterator, bool> out_type;
dict_type::value_type to_insert(key,value);
boost::function<void()> f = boost::bind<out_type>(
&dict_type::insert
,obj_
,boost::cref(to_insert)
);
}
下面的错误看起来像bind 找不到unordered_map::insert 的正确重载。在这种情况下,我指定了正确的重载,但这次它不起作用。你知道它是什么吗?
../include2/llve_clorder_id.h:32: error: no matching function for call to
'bind(<unresolved overloaded function type>,
boost::unordered_map<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, boost::hash<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > >&, const
boost::reference_wrapper<const std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > >)'
【问题讨论】:
-
您能指定您的编译器版本吗?一些不理解偏特化的旧编译器不能接受指向函数成员的指针作为
boost::bind的第一个参数。
标签: c++ boost-bind boost-function