【问题标题】:Boost date/time microsec_clock not compiling correctly提升日期/时间 microsec_clock 未正确编译
【发布时间】:2013-09-10 23:07:50
【问题描述】:

我正在尝试使用 C++ Boost 库 v1.41 的日期/时间工具。 (注意:这是 Linux,不是 Windows;g++ v4.4.7)

代码:

#include <boost/date_time/posix_time/posix_time.hpp>
using boost::posix_time::ptime;
using boost::date_time::microsec_clock;
 :
t1 = (boost::date_time::microsec_clock::local_time()); // line 208

错误:

tom.cpp:208: error: 'template<class time_type> class boost::date_time::microsec_clock' used without template parameters

现在,在 boost/date_time/posix_time/posix_time_types.hpp 中有这个:

#ifdef BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
  //! A time clock that has a resolution of one microsecond
  /*! \ingroup time_basics
   */
  typedef date_time::microsec_clock<ptime> microsec_clock;
#endif

我的结论是 BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK 未定义,导致 typedef 从未发生,导致对“microsec_clock”的引用看起来需要模板参数。

据我所知,我正在关注Boost date_time documentation。有什么想法吗?

【问题讨论】:

  • 您可以同时升级boostg++。你的版本太旧了!
  • 如果这确实是问题所在,那我就不走运了。我可能没有完全正确,但 CentOS 提供了它“批准”的某些级别的软件的软件包:Boost 处于其最新批准的级别,而 g++ 处于其最新的 4.4.* 版本(并且操作对超过 4.4 持谨慎态度)。它不在我的手中 - 我试过了:-/
  • 不,您可以安装(甚至在您的$HOME/software/ 目录中)您自己的更新版本的boostg++
  • 从 1.55 迁移到 1.64 后出现同样的问题。包含两个标题后消失:#include boost/date_time/posix_time/posix_time.hpp #include boost/date_time/posix_time/posix_time_types.hpp

标签: c++ linux boost-date-time


【解决方案1】:

我现在也有同样的问题。 昨天它没有任何问题,但今天我需要删除所有编译的库并重新编译它们,因为 svn 损坏问题。自从发生了这个错误。

修复它的方法相当简单。 只需使用

t1 = (boost::posix_time::microsec_clock::local_time());

而不是

t1 = (boost::date_time::microsec_clock::local_time());

这会将时间类型预设为 posix 格式,但它不会解决 BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK 的初始问题。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多