From 5104a4afcb26dc551c92071508d9d0753f81e174 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Sat, 8 Aug 2015 12:45:55 -0400 Subject: [PATCH] Revert: Make months and years not convertible to seconds: * After much consideration I consider this not a good change. * It introduced a completely arbitrary mathematical relationship among the units. * This commit restores a precise relationship among the units which is based on the Gregorian calendar. * However this experiment has been preserved in the git history. --- date.h | 3 +-- test/date_test/durations.pass.cpp | 24 ++++++++++-------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/date.h b/date.h index 49041d1..f7bd09e 100644 --- a/date.h +++ b/date.h @@ -45,8 +45,7 @@ using weeks = std::chrono::duration , days::period>>; using years = std::chrono::duration - , days::period>, - std::ratio<1, 7>>>; + , days::period>>; using months = std::chrono::duration >>; diff --git a/test/date_test/durations.pass.cpp b/test/date_test/durations.pass.cpp index 9be8f91..e20cf5c 100644 --- a/test/date_test/durations.pass.cpp +++ b/test/date_test/durations.pass.cpp @@ -42,9 +42,7 @@ static_assert( std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); -static_assert( - std::chrono::seconds{2629745} < date::months{1} && - date::months{1} < std::chrono::seconds{2629746}, ""); +static_assert(date::months{1} == std::chrono::seconds{2629746}, ""); static_assert(date::days{30} < date::months{1} && date::months{1} < date::days{31}, ""); static_assert(date::weeks{4} < date::months{1} && date::months{1} < date::weeks{5}, ""); static_assert(!std::is_convertible{}, ""); @@ -52,14 +50,12 @@ static_assert(!std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); -static_assert( - std::chrono::seconds{31556951} < date::years{1} && - date::years{1} < std::chrono::seconds{31556952}, ""); +static_assert(date::years{1} == std::chrono::seconds{31556952}, ""); static_assert(date::days{365} < date::years{1} && date::years{1} < date::days{366}, ""); static_assert(date::weeks{52} < date::years{1} && date::years{1} < date::weeks{53}, ""); static_assert(date::years{1} == date::months{12}, ""); @@ -68,10 +64,10 @@ static_assert(!std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); -static_assert(!std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); +static_assert( std::is_convertible{}, ""); static_assert(std::is_same{}, "");