// So on most modern systems, int32_t is int, and int64_t is long long. On Windows, time_t is also long long, but on
// macOS it's just long. Still 64 bits, but it's a nominally different type, so there's "no" valid overloads. If I
// just add an overload that takes time_t, Windows complains that I've declared the one taking long long twice, so I
// have to do this.
constexpr explicit int24_t(int x) noexcept : value(static_cast<int32_t>(x)) {}
MAYBE_UNUSED explicit int24_t(long x) noexcept : value(static_cast<int32_t>(x)) {}