2016-10-13 3 views
1
boost/std :: chrono::time_point my_time_point(/* invalid value */); 

Мне нужно сохранить недопустимое/бессмысленное/контрольное значение. Как я могу это сделать?std :: chrono :: time_point недопустимое значение

+4

Посмотрите в повышение :: опциональный или станд: : необязательно: http://www.boost.org/doc/libs/1_61_0/libs/optional/doc/html/index.html –

+0

Вы уверены, что это поможет? Мне нужно 'my_time_point' для хранения недопустимого значения – user3600124

+2

Точка« необязательный »предоставляет« дополнительное значение »в выбранном вами домене, который представляет состояние« null »/« invalid ». –

ответ

1

Вы можете использовать boost::optional(или std::optional, если у вас есть поддержка C++ 17) представлять недопустимое состояние 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 { /* ... */ } 
} 

(You can run it on wandbox.)

+0

Упрощенный, но nitpick: OP спросил о 'std :: chrono :: time_point', а не' boost :: chrono :: time_point'. :-) –

+0

@HowardHinnant: исправлено! –

Смежные вопросы