You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确实例化C++ Boost库的boost::posix_time::seconds类?

Boost::posix_time::seconds类实例化编译错误解决方案

错误原因

从你贴出的seconds类定义可以看到,它的模板构造函数加了boost::enable_if<boost::is_integral<T>>约束,意思是只接受整数类型的入参。你传入的60.0是double浮点类型,不满足类型约束,因此编译器找不到匹配的构造函数,触发报错。

正确实例化方法

  • 仅需要整秒时长:直接传入整数类型参数即可,无需使用浮点数,注意原代码这行末尾缺少分号,补全后即可正常编译:
    timer.expires_from_now(boost::posix_time::seconds(60));
    
  • 需要带小数的秒数(比如60.5秒):不要使用seconds类,改用更细粒度的时长类:
    // 用毫秒表示,60.5秒 = 60500毫秒
    timer.expires_from_now(boost::posix_time::milliseconds(60500));
    // 也可以直接构造time_duration对象,参数依次是时、分、秒、微秒
    timer.expires_from_now(boost::posix_time::time_duration(0, 0, 60, 500000));
    
  • 必须传入浮点类型的场景:显式转换为整数类型即可,注意小数部分会被截断:
    timer.expires_from_now(boost::posix_time::seconds(static_cast<long>(60.0)));
    

内容的提问来源于stack exchange,提问作者Astra Uvarova - Saturn's star

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:27:00