簡體   English   中英

std :: chrono :: time_point無效值

[英]std::chrono::time_point invalid value

boost/std :: chrono::time_point my_time_point( /* invalid value */ );

我需要存儲一個無效/無意義/前哨值。 我該怎么做?

您可以使用boost::optional (如果支持C ++ 17,則可以使用std::optional來表示chrono::time_point的無效狀態:

#include <chrono>
#include <boost/optional.hpp>

int main()
{
    using my_clock = std::chrono::system_clock;
    using my_time_point = std::chrono::time_point<my_clock>;

    boost::optional<my_time_point> maybe_time_point;

    // Set to invalid value:
    maybe_time_point = boost::none;

    // If 'maybe_time_point' is valid...
    if(maybe_time_point) 
    { 
        auto inner_value = *maybe_time_point;
        /* ... */
    }
    else { /* ... */ }
}

(您可以在wandbox上運行它。

我有相同的要求,結果發現這是一個優雅的解決方案。 如果可以將TimePoint設置為將來的合理值{Fri Apr 11 23:47:16 2262 },那么這樣做應該很簡單。

using Clock = std::chrono::high_resolution_clock;
using TimePoint = std::chrono::time_point<Clock>;
constexpr TimePoint invalidTime_k = TimePoint::max();

TimePoint my_time_point = invalidTime_k;

警告:此帖子將導致Y2262問題。 但是到那時,我們應該在標准中擁有更好的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM