boost::lock 不能在 boost 1.53 中编译

Cha*_*ani 5 c++ boost locking

我正在编译一个项目。它有以下几行:

boost::mutex::scoped_lock ml(m_meta_mut, boost::defer_lock);
    boost::mutex::scoped_lock tl(m_tables_mut, boost::defer_lock);
    boost::lock(ml, tl);
Run Code Online (Sandbox Code Playgroud)

我正在进入lock is not a member of boost第三行。我用的是boost1.53(项目推荐1.49)

问题是什么

Sam*_*ler 4

将我的评论变成更完整的答案。这些boost::lock()函数在 boost/thread/locks.hpp 中定义。当你看到编译器错误时

\n\n
\n

错误:\xe2\x80\x98lock\xe2\x80\x99 不是 \xe2\x80\x98boost\xe2\x80\x99 的成员

\n
\n\n

lock()编译器在命名空间中找不到函数boost。\n解决方案是添加#include <boost/thread/locks.hpp>您正在编译的任何翻译单元。

\n\n

尽管我没有广泛查看,但我没有看到此标头从 boost 1.49 到 boost 1.53 的变化。包含指令可能已更改。

\n\n

编辑: \n1.67 中仍然相同

\n