相关疑难解决方法(0)

chrono::month 和 chrono::months 有什么区别

C++20 计时类型/值month{7}months{7}? 有两个如此相似的名字是不是很混乱?

c++ c++-chrono c++20

103
推荐指数
1
解决办法
4951
查看次数

为什么无法将 `std::chrono::hours` 添加到 `std::chrono::sys_days`

迈出使用库的第一步<chrono>,我从日常的基本算术开始time_point。感谢 @HowardHinnant 的一篇非常有用的帖子,我成功地写了这个

#include <chrono>
using namespace std::chrono_literals;

int main()
{
    std::chrono::sys_days d {std::chrono::January/31/2022};
    d += std::chrono::days{2}; // ok
    //d += 48h; // error: no match for 'operator+=' with std::chrono::hours
}
Run Code Online (Sandbox Code Playgroud)

我不清楚的是为什么d += 48h;不允许。需要std::chrono::time_point<>::operator+=a duration,该表达式中的右值std::chrono::hours是 a在我看来代表持续时间。这里的哲学是什么?根据度量单位是否有不同的持续时间类型必须与粒度兼容time_point?为什么?

另一方面,我理解为什么d += 2d;会给出错误,因为在本例中std::literals::chrono_literals::operator""d 是 a std::chrono::day,它不是持续时间(这很容易形成日期文字,尽管对我来说似乎有点不一致)。我想知道是否有更方便的方法来表达相当于 的持续时间文字std::chrono::days{2}

c++ duration literals c++-chrono

5
推荐指数
1
解决办法
548
查看次数

标签 统计

c++ ×2

c++-chrono ×2

c++20 ×1

duration ×1

literals ×1