Gibt es sowas wie std::chrono::time_point was ohne statische now() auskommt?



  • Wir haben in unserem Code mehrere Clocks die aber nicht der C++ Standard-Idee einer Clock entsprechen, weil sie keine statische "now" Funktion haben. Und auch nicht haben können. Der Rest des Clock Concept wäre einfach hinzuzufügen.

    Jetzt würde ich aber trotzdem gerne std::chrono::time_point verwenden, bzw. halt etwas vergleichbares. Und dazu idealerweise das Rad nicht neu erfinden. std::chrono::time_point braucht die statische now() Funktion ja auch nicht. Ist halt nur praktisch und natürlich auch sicherer, da es garantiert dass man beim Rechnen mit time_points immer das rausbekommt was man sich erwartet, nämlich bei b-a die duration die zwischen a und b vergangen ist. Wenn jetzt unterschiedliche Clock-Instanzen (vom selbem Typ!) unterschiedliche Meinungen dazu haben was "now" ist, ist das natürlich nicht mehr gegeben.

    Grundsätzlich könnte man time_point aber auch genau so gut ohne statische now Funktion verwenden. Wenn es im Standard denn erlaubt wäre. Was es leider nicht ist 😞

    Kennt jemand von euch eine fertige Implementierung von sowas entweder in Boost oder in einer kleinen Library ohne zusätzliche Dependencies die man dafür verwenden könnte? Oder müsste ich dazu wirklich time_point re-implementieren (bzw. mir eine Implementierung mit ausreichend freizügiger Lizenz kopieren)?


    Natürlich könnte ich auch einfach duration misbrauchen. Mir gefällt halt nur die Eigenschaft sehr gut zwischen "time point" und "duration" unterscheiden zu können. Und auch zumindest zu verhindern dass jemand time-points von unterschiedlichen Clock-Klassen mischt, wenn man schon nicht verhindern kann dass time-points von unterschiedlichen Instanzen gemischt werden.


  • Mod

    Wo liegt denn das Problem dabei, einen now Dummy zu deklarieren (ohne Definition), wenn time_point diese Funktion nicht einsetzt?



  • @Columbo Hmja...
    Strenggenommen verletzt man damit natürlich immer noch das vom Standard vorgeschriebene Concept, aber technisch ist das vermutlich OK. Und schön ist auch was anderes 😞

    Aber danke für den Vorschlag!


Log in to reply