diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono index bd21ec189a5ae1acbb6c9df91dc74619cc28a434..10bdd1c4edeb8bfe0d11fa5309099cd1cd864875 100644 --- a/libstdc++-v3/include/std/chrono +++ b/libstdc++-v3/include/std/chrono @@ -1043,8 +1043,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION friend constexpr days operator-(const weekday& __x, const weekday& __y) noexcept { - auto __n = static_cast<long long>(__x._M_wd) - __y._M_wd; - return days{__detail::__modulo(__n, 7)}; + const auto __n = __x.c_encoding() - __y.c_encoding(); + return static_cast<int>(__n) >= 0 ? days{__n} : days{__n + 7}; } };