在boost :: posix_time中,如何从volatile time_duration构造time_duration?

时间:2014-06-27 10:21:45

标签: c++ boost volatile

我正在尝试编译此代码:

#include <boost/date_time.hpp>
using boost::posix_time::time_duration;
int main()
{
  volatile time_duration t0;
  time_duration t1 = t0;
  return 0;
}

使用此命令:

g++ test01.cpp -std=c++11 -I /boost_1_55_0/ -o test01

我收到了这个错误:

  

test01.cpp:6:22:错误:没有匹配函数来调用'boost :: posix_time :: time_duration :: time_duration(volatile boost :: posix_time :: time_duration&amp;)

我正在使用gcc 4.8.2;任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

这是由于a GCC bug。解决方法如下:

volatile time_duration t0;
time_duration t1 = const_cast<time_duration&>(t0);

它有效,因为const_cast可以消除波动性和常量。我不确定这是多么严格的安全,请注意。

另一种解决方法是首先摆脱volatile;它现在很少用于任何目的。