This would be a very straightforward and uncontroversial change if not for the sad state of std lib implementations which implement this functionality.
As of now, std::chrono::parse
and friends (c++20 additions) are only available as of gcc 14 and (unreleased) clang 19.
Formatting in chrono is quite useful, so I don’t think it makes sense to wait years until we require those compilers.
Instead of waiting around, this PR takes the sledgehammer approach of adding a fully-conformant implementation of the new c++20 chrono features (from the author of std::chrono
himself). More info available here: https://howardhinnant.github.io/date/date.html
A convenience header adds the chrono_parse
namespace, which uses the std lib if possible, and date.h
otherwise.
This allows us to get rid of our last use of boost::date_time
, and we can begin using more modern c++20-isms as well.