Add constexpr conversions from absl::Duration to int64_t

PiperOrigin-RevId: 736183575
Change-Id: I9c6b9317ce05b5ca45cbc5f75a985f1bbdaed043
diff --git a/absl/time/time.h b/absl/time/time.h
index d73a204..db17a4c 100644
--- a/absl/time/time.h
+++ b/absl/time/time.h
@@ -620,12 +620,12 @@
 //
 //   absl::Duration d = absl::Milliseconds(1500);
 //   int64_t isec = absl::ToInt64Seconds(d);  // isec == 1
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Nanoseconds(Duration d);
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Microseconds(Duration d);
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Milliseconds(Duration d);
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Seconds(Duration d);
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Minutes(Duration d);
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Hours(Duration d);
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Nanoseconds(Duration d);
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Microseconds(Duration d);
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Milliseconds(Duration d);
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Seconds(Duration d);
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Minutes(Duration d);
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Hours(Duration d);
 
 // ToDoubleNanoseconds()
 // ToDoubleMicroseconds()
@@ -1864,7 +1864,7 @@
   return time_internal::FromUnixDuration(Seconds(t));
 }
 
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Nanoseconds(Duration d) {
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Nanoseconds(Duration d) {
   if (time_internal::GetRepHi(d) >= 0 &&
       time_internal::GetRepHi(d) >> 33 == 0) {
     return (time_internal::GetRepHi(d) * 1000 * 1000 * 1000) +
@@ -1873,7 +1873,8 @@
   return d / Nanoseconds(1);
 }
 
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Microseconds(Duration d) {
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Microseconds(
+    Duration d) {
   if (time_internal::GetRepHi(d) >= 0 &&
       time_internal::GetRepHi(d) >> 43 == 0) {
     return (time_internal::GetRepHi(d) * 1000 * 1000) +
@@ -1883,7 +1884,8 @@
   return d / Microseconds(1);
 }
 
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Milliseconds(Duration d) {
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Milliseconds(
+    Duration d) {
   if (time_internal::GetRepHi(d) >= 0 &&
       time_internal::GetRepHi(d) >> 53 == 0) {
     return (time_internal::GetRepHi(d) * 1000) +
@@ -1893,21 +1895,21 @@
   return d / Milliseconds(1);
 }
 
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Seconds(Duration d) {
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Seconds(Duration d) {
   int64_t hi = time_internal::GetRepHi(d);
   if (time_internal::IsInfiniteDuration(d)) return hi;
   if (hi < 0 && time_internal::GetRepLo(d) != 0) ++hi;
   return hi;
 }
 
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Minutes(Duration d) {
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Minutes(Duration d) {
   int64_t hi = time_internal::GetRepHi(d);
   if (time_internal::IsInfiniteDuration(d)) return hi;
   if (hi < 0 && time_internal::GetRepLo(d) != 0) ++hi;
   return hi / 60;
 }
 
-ABSL_ATTRIBUTE_CONST_FUNCTION inline int64_t ToInt64Hours(Duration d) {
+ABSL_ATTRIBUTE_CONST_FUNCTION constexpr int64_t ToInt64Hours(Duration d) {
   int64_t hi = time_internal::GetRepHi(d);
   if (time_internal::IsInfiniteDuration(d)) return hi;
   if (hi < 0 && time_internal::GetRepLo(d) != 0) ++hi;