0

我正在尝试使用boost::thread::try_join_for()函数,但出现以下编译时错误:

“'class boost::thread' 没有名为 'try_join_for' 的成员

我能够使用boost::thread::timed_join()功能。但我不想使用此功能,因为此功能已被弃用。

我目前的升压版本是 1.66.0。之前我有1.61.0,我想可能有bug,所以我更新到1.66.0。但仍然是同样的问题。

我还查看了头文件<boost/thread/detail/thread.hpp>。也许看起来宏BOOST_THREAD_USES_CHRONO没有定义。虽然,我的 IDE (QT) 能够检测到宏已定义,因为如果我将其更改为,#if !defined BOOST_THREAD_USES_CHRONO那么后面的块代码就会褪色。

我的构建命令如下:

./bootstrap.sh --with-toolset=gcc

./bjam -d0 -a 工具集=gcc-自定义地址模型=64 架构=x86 指令集=nocona 变体=释放线程=多链接=静态阶段

我什至可以在构建输出中看到正在构建 chrono 组件。以下是部分输出:

- atomic                   : building
- chrono                   : building
- container                : building
- context                  : building
- coroutine                : building
- date_time                : building
- exception                : building
- fiber                    : building
- filesystem               : building
- graph                    : building
- graph_parallel           : building
- iostreams                : building
- locale                   : building
- log                      : building
- math                     : building
- mpi                      : building
- program_options          : building
- python                   : building
- random                   : building
- regex                    : building
- serialization            : building
- signals                  : building
- stacktrace               : building
- system                   : building
- test                     : building
- thread                   : building
- timer                    : building
- type_erasure             : building
- wave                     : building

我错过了什么吗?我正在 Linux 上构建。我的编译器版本是 gcc-5.4。

谢谢。

4

1 回答 1

1

Boost 1.66 似乎还不支持 Wandbox,但它可以与 Boost 1.65.1 一起愉快地编译:

简而言之,我会猜测 IDE 的智能感知诊断,然后简单地检查一下,例如

#ifndef BOOST_THREAD_USES_CHRONO
    std::cout << "Yay\n";
#else
    std::cout << "Nay\n";
#endif
于 2017-12-29T21:15:13.517 回答