【发布时间】:2019-10-30 07:14:26
【问题描述】:
我有一个long long 类型的变量,它表示以纳秒为单位的时间点。
我正在尝试使用 std::chrono::time_point 来包装它,但编译器 (VS 2017) 给我带来了麻烦。
下面是编译的代码:
std::chrono::time_point<std::chrono::steady_clock> tpStart(std::chrono::nanoseconds(10ll));
std::chrono::time_point<std::chrono::steady_clock> tpEnd = std::chrono::steady_clock::now();
double d = std::chrono::duration<double>(tpEnd - tpStart).count();
现在如果我用变量切换值10ll,计算持续时间的行编译失败:
constexpr long long t = 10ll;
std::chrono::time_point<std::chrono::steady_clock> tpStart(std::chrono::nanoseconds(t));
std::chrono::time_point<std::chrono::steady_clock> tpEnd = std::chrono::steady_clock::now();
double d = std::chrono::duration<double>(tpEnd - tpStart).count();
这是错误代码:
错误 C2679:二进制“-”:未找到采用“重载函数”类型的右侧操作数的运算符(或没有可接受的转换)
知道为什么会这样吗?如何将 long long 类型的变量转换为 std::chrono::time_point?
【问题讨论】: