В libc ++ , таким образом мы находим дни от дня недели y (rhs) до дня недели 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};