- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Boost.Thread 编写应用程序。不幸的是,将新版本移至“生产”环境后,我无法编译该项目。 g++
说:
/usr/include/boost/thread/locks.hpp: In constructor
‘boost::upgrade_to_unique_lock<Mutex>::upgrade_to_unique_lock
(boost::upgrade_lock<Mutex>&) [with Mutex = boost::shared_mutex]’:
worker.cpp:34:69: instantiated from here
/usr/include/boost/thread/locks.hpp:926:48: error: call of overloaded ‘move(
boost::upgrade_lock<boost::shared_mutex>&)’ is ambiguous
/usr/include/boost/thread/locks.hpp:926:48: note: candidates are:
/usr/include/boost/move/move.hpp:294:86: note: typename boost::move_detail
::disable_if<boost::has_move_emulation_enabled<T>, T&>::type boost::move(T&)
[with T = boost::upgrade_lock<boost::shared_mutex>, typename boost::move_detail
::disable_if<boost::has_move_emulation_enabled<T>, T&>::type = boost
::upgrade_lock<boost::shared_mutex>&]
/usr/include/boost/thread/detail/move.hpp:44:110: note: typename boost
::enable_if<boost::is_convertible<T&, boost::detail::thread_move_t<T> >,
boost::detail::thread_move_t<T> >::type boost::move(T&) [with T = boost
::upgrade_lock<boost::shared_mutex>, typename boost::enable_if<boost
::is_convertible<T&, boost::detail::thread_move_t<T> >, boost::detail
::thread_move_t<T> >::type = boost::detail::thread_move_t<boost
::upgrade_lock<boost::shared_mutex> >]
/usr/include/boost/thread/locks.hpp: In destructor ‘boost::upgrade_to_unique_lock
<Mutex>::~upgrade_to_unique_lock() [with Mutex = boost::shared_mutex]’:
worker.cpp:34:69: instantiated from here
/usr/include/boost/thread/locks.hpp:932:17: error: call of overloaded ‘move(boost
::unique_lock<boost::shared_mutex>&)’ is ambiguous
...
等等等等。
我检查了开发环境和生产环境是否具有相同的 libboost 版本 (1.48)。
有谁知道可能是什么原因?我应该检查/升级哪些其他库/工具版本?
最佳答案
这是 Boost 1.48 中的一个已知错误,根据 their bug tracker 似乎已在 1.49 中修复.如果将模拟 C++11 移动语义的 Boost.Move 与带有自己的移动语义模拟器的 Boost.Thread 一起使用,则存在歧义。
考虑到 Boost 1.48 已发布超过 2.5 年(在 November 2011 中),您应该考虑升级到最新版本,目前是 Boost 1.55。
关于c++ - Boost upgrade_to_unique_lock 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542574/
我正在使用 Boost.Thread 编写应用程序。不幸的是,将新版本移至“生产”环境后,我无法编译该项目。 g++ 说: /usr/include/boost/thread/locks.hpp: I
我想在不阻塞的情况下对 upgrade_lock 执行 upgrade_to_unique_lock,但粗略查看 Boost 源代码 (v1.46.1) 表明这是不可能的?我的方法错了吗? 我想首先获
我正在尝试用 C++11 中的 STL 功能替换增强功能。我的多线程应用程序中有一个写函数。 首先,函数验证数据。接下来,写入它。有两种锁,如下所述: class Data { mutable
我正在寻找在偏向编写器读取器/编写器模型中的两个(或多个)进程之间有效共享数据 block 的最佳方法。 我当前的测试是使用 boost::interprocess。我已经创建了一些 managed_
所以我有一些 shared_mutex 并完成了这个: boost::upgrade_lock lock(f->mutex); boost::upgrade_to_un
我有一个小cpp source和 h source一些类的文件。它使用 shared mutexes and shared locks .它使用 boost 1.48.0 在 Windows 上编译时
我是一名优秀的程序员,十分优秀!