Ошибка компиляции с библиотекой журнала Boost при использовании date_time_formatter

Я пытаюсь использовать библиотеку журнала Boost, и я хочу добавить временную метку к выходу. Я начал с этого примера, но я столкнулся с ошибкой компиляции. Я скопировал код точно так, как в примере, и изменил функцию init() на вторую (example_tutorial_formatters_stream_date_time). Теперь у меня есть следующая ошибка компиляции:

$ g++ -Wall -Wextra -O0 -g -isystem /proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include -c main.cpp -o main.o
In file included from /proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters.hpp:23:0,
                 from /proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions.hpp:26,
                 from main.cpp:109:
/proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters/date_time.hpp: In instantiation of 'boost::log::v2s_mt_posix::expressions::format_date_time_terminal<T, FallbackPolicyT, CharT>::format_date_time_terminal(const boost::log::v2s_mt_posix::attribute_name&, const fallback_policy&, const string_type&) [with T = boost::posix_time::ptime; FallbackPolicyT = boost::log::v2s_mt_posix::fallback_to_none; CharT = char; boost::log::v2s_mt_posix::expressions::format_date_time_terminal<T, FallbackPolicyT, CharT>::fallback_policy = boost::log::v2s_mt_posix::fallback_to_none; boost::log::v2s_mt_posix::expressions::format_date_time_terminal<T, FallbackPolicyT, CharT>::string_type = std::basic_string<char>]':
/proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters/date_time.hpp:229:94:   required from 'boost::log::v2s_mt_posix::expressions::format_date_time_actor<AttributeValueT, boost::log::v2s_mt_posix::fallback_to_none, CharT> boost::log::v2s_mt_posix::expressions::format_date_time(const boost::log::v2s_mt_posix::attribute_name&, const CharT*) [with AttributeValueT = boost::posix_time::ptime; CharT = char]'
main.cpp:156:103:   required from here
/proj/cudbdm/tools/external/boost/inst_1_54_0_cxx11/include/boost/log/expressions/formatters/date_time.hpp:94:68: error: incomplete type 'boost::log::v2s_mt_posix::expressions::format_date_time_terminal<boost::posix_time::ptime, boost::log::v2s_mt_posix::fallback_to_none, char>::formatter_generator {aka boost::log::v2s_mt_posix::expressions::aux::date_time_formatter_generator_traits<boost::posix_time::ptime, char, void>}' used in nested name specifier
         m_name(name), m_formatter(formatter_generator::parse(format)), m_visitor_invoker(fallback)
                                                                    ^

Я пробовал использовать gcc 4.7.2 и 4.8.1 с флагом -std=c++11 и без него, но каждый раз получал тот же результат. Похоже, что ошибка в библиотеке Boost, что странно для меня, поскольку даже официальный пример не компилируется.

Ответ 1

Проблема заключается в том, что <boost/log/support/date_time.hpp> необходимо включить. Это также указано в документации в нужном месте, но как-то не указано в этом примере.