// { dg-do run { target c++20 } } // Class weekday [time.cal.wd] #include #include #include using namespace std::chrono; void test_extreme_values(days extreme) { auto const count = extreme.count(); auto const safe = count < 0 ? count + 7 : count; auto const mod = safe - 7 * ((safe < 0 ? safe - 6 : safe) / 7); for (unsigned d = 0; d < 254; ++d) { auto const weekday_plus_extreme = weekday{d} + extreme; VERIFY(weekday_plus_extreme.c_encoding() == (d + mod) % 7); auto const weekday_minus_extreme = weekday{d} - extreme; VERIFY(weekday_minus_extreme.c_encoding() == (d + 7 - mod) % 7); } } int main() { test_extreme_values(days{std::numeric_limits::max()}); test_extreme_values(days{std::numeric_limits::min()}); return 0; }