Ошибка с функцией boost::thread::try_join_for()

Я пытаюсь использовать boost::thread::try_join_for() функция, но я получаю следующую ошибку во время компиляции:

"класс boost::thread" не имеет члена с именем 'try_join_for'

Я могу использовать boost::thread::timed_join() функция. Но я не хочу использовать эту функцию, так как эта функция устарела.

Моя текущая версия Boost 1.66.0. Раньше у меня был 1.61.0, и я подумал, может быть, есть ошибка, поэтому я обновил ее до 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.

Благодарю.

1 ответ

Похоже, что Wandbox не поддерживает Boost 1.66, но он успешно компилируется с Boost 1.65.1:

Короче говоря, я бы предпочел диагностику intellisense в среде IDE и просто проверил, например,

#ifndef BOOST_THREAD_USES_CHRONO
    std::cout << "Yay\n";
#else
    std::cout << "Nay\n";
#endif
Другие вопросы по тегам