加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用-std = c 0x增加1.53本地日期时间编译器错误

发布时间:2020-12-16 05:41:42 所属栏目:百科 来源:网络整理
导读:使用g版本4.7.2,如果我尝试编译以下内容 #include boost/date_time/local_time/local_time.hpp class Bar{public:Bar() { tz_db_.load_from_file("/home/date_time_zonespec.csv"); }private: boost::local_time::tz_database tz_db_;};int main(){ return 0
使用g版本4.7.2,如果我尝试编译以下内容
#include <boost/date_time/local_time/local_time.hpp> 

class Bar
{
public:

Bar() { tz_db_.load_from_file("/home/date_time_zonespec.csv"); }

private:
    boost::local_time::tz_database tz_db_;
};

int main()
{
    return 0;
}

使用-std = c 0x我收到以下错误.

In file included from /usr/local/include/boost/date_time/local_time/local_time_types.hpp:18:0,from /usr/local/include/boost/date_time/local_time/local_time.hpp:13,from test.h:4,from test.cpp:1: /usr/local/include/boost/date_time/local_time/custom_time_zone.hpp: In instantiation of ‘bool boost::local_time::custom_time_zone_base<CharT>::has_dst() const [with CharT = char]’: test.cpp:11:1:   required from here /usr/local/include/boost/date_time/local_time/custom_time_zone.hpp:67:30: error: cannot convert ‘const boost::shared_ptr<boost::date_time::dst_day_calc_rule<boost::gregorian::date>
>’ to ‘bool’ in return

如果我不使用c 0x选项,一切都很好.
谁能告诉我这里发生了什么?

解决方法

当你为C 11构建时,boost :: shared_ptr :: operator bool()被声明为显式.这通常是一件好事,但遗憾的是它会破坏依赖于隐式转换的代码,例如此函数(这是导致错误的原因):
virtual bool has_dst() const
{
  return (dst_calc_rules_); //if calc_rule is set the tz has dst
}

其中dst_calc_rules_是shared_ptr.

直到Boost的某个人开始修复它,你可以做两件事:

>破解该函数返回bool(dst_calc_rules_);>定义BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS以允许隐式转换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读