Re[2]: Ненависть к std::chrono
От: Cyberax Марс  
Дата: 28.12.20 12:22
Оценка:
Здравствуйте, vopl, Вы писали:

C>>Скажите, ну вот какой пиииииии в комитете не догадался сделать так, чтобы часы можно было вызывать через виртуальный метод?!?

V>У разных часов разные временные пространства. Чтобы их оформить виртуальными методами — надо иметь некое общее пространство времени. Такового не придумали... А предложи интерфейс часов с виртуальными методами, как бы это могло выглядеть на твой взгляд?
Вот так:
    struct timestamp_t {
        int64_t epoch_seconds;
        uint32_t nanos;
    };

    class clock_t
    {
    public:
        virtual ~clock_t() = default;
        virtual timestamp_t now() const;
    };

Всё, вопрос закрыт. Этот код решает проблемы с временим на ближайшие 200 миллиардов лет, с точностью до наносекунд.

Если хочется мастурбировать на шаблоны, и теоретические потребности поддержки разных эпох, то ну сделайте так:
template<class Timespace> struct timestamp_t {
  int64_t epoch_seconds;
  uint32_t nanos;
};

template<class Timespace> class clock_t    {
  public:
    virtual ~clock_t() = default;
    virtual timestamp_t<Timespace> now() const;
};

Т.е. чтобы нельзя было случайно присвоить две отметки времени с разными эпохами.

Но даже это тупо не нужно. Все давно стандартизовались на Unix-эпохе. При необходимости она тривиально преобразуется в любую другую простым прибавлением константы.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.