У меня проблемы с некоторым кодом из проекта C ++.Он включает в себя библиотеку std::chrono
и продолжает работать при следующем утверждении:
static_assert(system_clock::duration::min() < system_clock::duration::zero(), "a clock's minimum duration cannot be less than its epoch");
Assert разбивает код как на компьютере Debian с g ++ 6.3.0, так и на ПК с Windows 10, CygWin и g ++7.3.0.Я также попробовал в онлайн-компиляторе C ++ простой пример, включающий библиотеку chrono, которая сама по себе не создает никаких проблем, но при сравнении вручную минимальная и нулевая длительность системных часов chrono дает результат, который должен вызвать утверждение какну.
Я искал проблему и нашел некоторые подсказки, приводящие к некоторым связанным проблемам, вызванным переменной posix TZ, которая содержит информацию о часовом поясе.Попытался сбросить и установить его на правильное значение, но это не оказало влияния на assert.
Я был бы признателен за любые указатели или предложения.
Редактировать: Хотя стандарт:: chrono :: milliseconds :: zero () имеет (как и ожидалось) значение 0, значение std :: chrono :: milliseconds :: min () равно -9223372036854775808 или -2 ^ 63, которое я считаюминимально возможное значение для длинного длинного значения (возможное переполнение?).