我正在尝试编译此代码:
#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;任何想法如何解决这个问题?
答案 0 :(得分:8)
这是由于a GCC bug。解决方法如下:
volatile time_duration t0;
time_duration t1 = const_cast<time_duration&>(t0);
它有效,因为const_cast
可以消除波动性和常量。我不确定这是多么严格的安全,请注意。
另一种解决方法是首先摆脱volatile
;它现在很少用于任何目的。