chrono-Literale

(C++14) Der <chrono> Header definiert 12 benutzerdefinierte Literale , die Stunden, Minuten, Sekunden, Millisekunden, Mikrosekunden und Nanosekunden darstellen. Jedes benutzerdefinierte Literal verfügt über eine integrale und eine Gleitkommaüberladung. Die Literale werden im literals::chrono_literals Inlinenamespace definiert, der automatisch in den Bereich eingegliedert wird, wenn std::chrono sich der Bereich befindet.

Syntax

inline namespace literals {
  inline namespace chrono_literals {
    // return integral days
    constexpr std::chrono::day operator"" d(unsigned long long d) noexcept;

    // return integral hours
    constexpr chrono::hours operator"" h(unsigned long long Val);

    // return floating-point hours
    constexpr chrono::duration<double, ratio<3600>> operator"" h(long double Val);

    // return integral minutes
    constexpr chrono::minutes(operator"" min)(unsigned long long Val);

    // return floating-point minutes
    constexpr chrono::duration<double, ratio<60>>(operator"" min)(long double Val);

    // return integral seconds
    constexpr chrono::seconds operator"" s(unsigned long long Val);

    // return floating-point seconds
    constexpr chrono::duration<double> operator"" s(long double Val);

    // return integral milliseconds
    constexpr chrono::milliseconds operator"" ms(unsigned long long Val);

    // return floating-point milliseconds
    constexpr chrono::duration<double, milli> operator"" ms(long double Val);

    // return integral microseconds
    constexpr chrono::microseconds operator"" us(unsigned long long Val);

    // return floating-point microseconds
    inline constexpr chrono::duration<double, micro> operator"" us(long double Val);

    // return integral nanoseconds
    inline constexpr chrono::nanoseconds operator"" ns(unsigned long long Val);

    // return floating-point nanoseconds
    constexpr chrono::duration<double, nano> operator"" ns(long double Val);

    // return integral year
    constexpr chrono::year operator""y(unsigned long long y) noexcept; // C++20
  } // inline namespace chrono_literals
} // inline namespace literals

Rückgabewert

Die Literale, die ein long long-Argument verwenden, geben einen Wert oder einen entsprechenden Typ zurück. Die Literale, die ein Gleitkommaargument annehmen, geben ein duration.

Beispiel

Die folgenden Beispiele zeigen, wie die chrono Literale verwendet werden.

constexpr auto day = 14d; // If the value > 255, then the stored value is unspecified. 
constexpr auto twoDays = 48h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;
constexpr auto theYear = 2021y;