[libcxx-commits] [libcxx] [libc++] Avoid template instantiations in the duration aliases (PR #178182)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jan 27 10:56:41 PST 2026


================
@@ -291,13 +291,13 @@ typedef duration<long long, nano> nanoseconds;
 typedef duration<long long, micro> microseconds;
 typedef duration<long long, milli> milliseconds;
 typedef duration<long long > seconds;
-typedef duration< long, ratio< 60> > minutes;
-typedef duration< long, ratio<3600> > hours;
+typedef duration<long, ratio<60> > minutes;
+typedef duration<long, ratio<60 * 60> > hours;
 #if _LIBCPP_STD_VER >= 20
-typedef duration< int, ratio_multiply<ratio<24>, hours::period>> days;
-typedef duration< int, ratio_multiply<ratio<7>, days::period>> weeks;
-typedef duration< int, ratio_multiply<ratio<146097, 400>, days::period>> years;
-typedef duration< int, ratio_divide<years::period, ratio<12>>> months;
+typedef duration<int, ratio<60 * 60 * 24>> days;
+typedef duration<int, ratio<60 * 60 * 24 * 7>> weeks;
+typedef duration<int, ratio<31556952>> years;
----------------
ldionne wrote:

Can we write this as `(146097/400) * 60 * 60 * 24` instead? It makes it clear that this is derived from the number of seconds in a day and the number of days in a year.

https://github.com/llvm/llvm-project/pull/178182


More information about the libcxx-commits mailing list