int main() { using weekday = std::chrono::weekday; using weekday_indexed = std::chrono::weekday_indexed; ASSERT_NOEXCEPT(weekday_indexed{}); ASSERT_NOEXCEPT(weekday_indexed(weekday{1}, 1)); constexpr weekday_indexed wdi0{}; static_assert( wdi0.weekday() == weekday{}, ""); static_assert( wdi0.index() == 0, ""); static_assert(!wdi0.ok(), ""); constexpr weekday_indexed wdi1{std::chrono::Sunday, 2}; static_assert( wdi1.weekday() == std::chrono::Sunday, ""); static_assert( wdi1.index() == 2, ""); static_assert( wdi1.ok(), ""); for (unsigned i = 1; i <= 5; ++i) { weekday_indexed wdi(std::chrono::Tuesday, i); assert( wdi.weekday() == std::chrono::Tuesday); assert( wdi.index() == i); assert( wdi.ok()); } for (unsigned i = 6; i <= 20; ++i) { weekday_indexed wdi(std::chrono::Tuesday, i); assert(!wdi.ok()); } }
int main() { using weekday = std::chrono::weekday; using weekday_indexed = std::chrono::weekday_indexed; ASSERT_NOEXCEPT( std::declval<const weekday_indexed>().index()); ASSERT_SAME_TYPE(unsigned, decltype(std::declval<const weekday_indexed>().index())); static_assert( weekday_indexed{}.index() == 0, ""); for (unsigned i = 1; i <= 5; ++i) { weekday_indexed wdi(weekday{2}, i); assert( static_cast<unsigned>(wdi.index()) == i); } }
int main(int, char**) { using weekday = std::chrono::weekday; using weekday_indexed = std::chrono::weekday_indexed; ASSERT_NOEXCEPT( std::declval<const weekday_indexed>().weekday()); ASSERT_SAME_TYPE(std::chrono::weekday, decltype(std::declval<const weekday_indexed>().weekday())); static_assert( weekday_indexed{}.weekday() == weekday{}, ""); static_assert( weekday_indexed{std::chrono::Tuesday, 0}.weekday() == std::chrono::Tuesday, ""); for (unsigned i = 0; i <= 6; ++i) { weekday_indexed wdi(weekday{i}, 2); assert( static_cast<unsigned>(wdi.weekday()) == i); } return 0; }