[英]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 { /* ... */ }
}
我有相同的要求,結果發現這是一個優雅的解決方案。 如果可以將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.