Ошибка с функцией 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:
- GCC 5.4, Boost 1.65.1 https://wandbox.org/permlink/WlY123MQc8LpnAq3
- GCC 7.2, Boost 1.65.1 https://wandbox.org/permlink/QrW0bV00fG1sldpj
Короче говоря, я бы предпочел диагностику intellisense в среде IDE и просто проверил, например,
#ifndef BOOST_THREAD_USES_CHRONO
std::cout << "Yay\n";
#else
std::cout << "Nay\n";
#endif