【发布时间】:2014-09-07 23:59:36
【问题描述】:
我收到以下编译器 (vs2012) 错误:
错误 3 错误 C2679: 二进制 '+=' : 找不到运算符 'const std::chrono::duration<_rep>' 类型的右手操作数 (或没有可接受的转换) c:\program files (x86)\microsoft visual studio 11.0\vc\include\chrono 749
我对持续时间的定义是:
// Tick interval type in nanoseconds
typedef std::chrono::duration<double, std::ratio<1, 100000000>> tick_interval_type;
当我使用浮点数时出现同样的错误...它仅在持续时间的 Rep 类型为整数时编译。
有人可以帮忙吗?
编辑(来自输出的更完整日志):
c:\program 文件 (x86)\microsoft visual studio 11.0\vc\include\chrono(749):错误 C2679:二进制“+=”:未找到采用“const”类型的右手操作数的运算符 std::chrono::duration<_rep>' (或者没有可接受的 转换)与 [ _Rep=双倍, _Period=std::nano ] c:\program files (x86)\microsoft visual studio 11.0\vc\include\chrono(166): could be 'std::chrono::duration<_rep> &std::chrono::duration<_rep>::operator +=(const std::chrono::duration<_rep> &)' 与 [ _Rep=__int64, _Period=std::nano ] 尝试匹配参数列表 '(std::chrono::nanoseconds, const std::chrono::duration<_rep>)' 与 [ _Rep=双倍, _Period=std::nano ] c:\program files (x86)\microsoft visual studio 11.0\vc\include\thread(164) :参见对函数模板实例化 'xtime std::_To_xtime(const std::chrono::duration<_rep> &)' 用 [ 编译 _Rep=双倍, _Period=std::nano ] c:\dev\projects\revolverx\classes\ticker.h(78) :参见对函数模板实例化的参考 'void std::this_thread::sleep_for(const std::chrono::duration<_rep> &)' 用 [ 编译 _Rep=双倍, _Period=std::nano ]
【问题讨论】:
-
构建日志中是否还有其他消息?例如,它说明使用了哪些类型以及预期的是什么?请编辑您的问题以包含完整错误日志。
-
@Joachim Pileborg,我的错,问题已更新。希望对您有所帮助。
标签: c++ c++11 compiler-errors type-conversion chrono