在libc++中,这是我们从工作日y到工作日x (lhs)的未来方向。
constexpr days operator-(const weekday& __lhs, const weekday& __rhs) noexcept
{
const int __wdu = __lhs.c_encoding() - __rhs.c_encoding();
const int __wk = (__wdu >= 0 ? __wdu : __wdu-6) / 7;
return days{__wdu - __wk * 7};
}与date.h库中的相同
CONSTCD14
inline
days
operator-(const weekday& x, const weekday& y) NOEXCEPT
{
auto const wdu = x.wd_ - y.wd_;
auto const wk = (wdu >= 0 ? wdu : wdu-6) / 7;
return days{wdu - wk * 7};
}我想知道为什么我们就不能这样做?
return days{x.wd_ - y.wd_ >= 0 ? x.wd_ - y.wd_ : x.wd_ - y.wd_ + 7};发布于 2020-03-23 18:31:18
其基本原理是,我想对weekday(即!ok() )提供一些支持。例如:
auto x = weekday{13} - weekday{5}; // x == 1d也就是说,对于大于0,6的范围,算法是模7的。这是一个实验,我想这个实验还在进行中。这种支持没有进入C++20规范。
https://stackoverflow.com/questions/60818740
复制相似问题