对boost::condition_variable::wait的调用没有匹配的函数

no matching function for call to boost::condition_variable::wait

本文关键字:函数 调用 wait boost condition variable      更新时间:2023-10-16

这是我的场景

boost::condition_variable        _condition;
boost::unique_lock<boost::mutex> lock(_mutex);
boost::detail::atomic_count      _count;
.........
_condition.wait(&lock, boost::bind(std::less<int>(), boost::ref(_count), max));

获取错误

error: no matching function for call to 'boost::condition_variable::wait(boost::unique_lock<boost::mutex>*, boost::_bi::bind_t<boost::_bi::unspecified, std::less<int>, boost::_bi::list2<boost::reference_wrapper<boost::detail::atomic_count>, boost::_bi::value<short unsigned int> > >)'

问题出在哪里?

condition_variable::wait()接受单参数

void wait(boost::unique_lock<boost::mutex>& lock)

或者谓词类型为的双自变量情况

template<typename predicate_type> void wait(boost::unique_lock<boost::mutex>& lock, predicate_type pred)

在任何一种情况下,第一个参数都是引用,而不是像您的示例中那样是指针。