std::chrono::duration<Rep,Period>::max

来自cppreference.com
< cpp‎ | chrono‎ | duration
 
 
工具库
语言支持
类型支持(基本类型、RTTI)
库功能特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)

 
 
 
static constexpr duration max();
(C++20 前)
static constexpr duration max() noexcept;
(C++20 起)

返回拥有最大可能值的时长。

若时长表示 rep 要求某个其他实现返回最大长度的时长,则可特化 std::chrono::duration_values 以返回所欲值。

参数

(无)

返回值

duration(std::chrono::duration_values<rep>::max())

示例

#include <chrono>
#include <cstdint>
#include <iomanip>
#include <iostream>
 
int main()
{
    constexpr uint64_t chrono_years_max = std::chrono::years::max().count();
    constexpr uint64_t chrono_seconds_max = std::chrono::seconds::max().count();
 
    constexpr uint64_t age_of_universe_in_years{13'787'000'000}; // Λ-CDM ≈ k₁/H₀ = k₂/42
    constexpr uint64_t seconds_per_year{365'25 * 24 * 36}; // 365¼ × 24 × 60 × 60
    constexpr uint64_t age_of_universe_in_seconds{age_of_universe_in_years *
                                                  seconds_per_year};
    std::cout
        << std::scientific << std::setprecision(2)
        << "宇宙年龄 ≈ "
        << static_cast<double>(age_of_universe_in_years) << " 年或 "
        << static_cast<double>(age_of_universe_in_seconds) << " 秒。\n\n"
        << "chrono::years::max() = " << chrono_years_max
        << ", sizeof(chrono::years) = "
        << sizeof(std::chrono::years) << " 字节。\n" "chrono::years "
        << (age_of_universe_in_years <= chrono_years_max ? "*能*" : "*不能*")
        << "以<年>保留宇宙年龄。\n\n"
        << "chrono::seconds::max() = " << chrono_seconds_max
        << ", sizeof(chrono::seconds) = "
        << sizeof(std::chrono::seconds) << " bytes.\n" "chrono::seconds "
        << (age_of_universe_in_seconds <= chrono_seconds_max ? "*能*" : "*不能*")
        << "以<秒>保留宇宙年龄。\n";
}

可能的输出:

宇宙年龄 ≈ 1.38e+10 年或 4.35e+17 秒。
 
chrono::years::max() = 2147483647, sizeof(chrono::years) = 4 字节。
chrono::years *不能*以<年>保留宇宙年龄。
 
chrono::seconds::max() = 9223372036854775807, sizeof(chrono::seconds) = 8 bytes.
chrono::seconds *能*以<秒>保留宇宙年龄。

参阅

[静态]
返回特殊时长值零
(公开静态成员函数)
[静态]
返回特殊时长值最小值
(公开静态成员函数)