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_pointverwenden, bzw. halt etwas vergleichbares. Und dazu idealerweise das Rad nicht neu erfinden.std::chrono::time_pointbraucht die statischenow()Funktion ja auch nicht. Ist halt nur praktisch und natürlich auch sicherer, da es garantiert dass man beim Rechnen mittime_points immer das rausbekommt was man sich erwartet, nämlich beib-adiedurationdie zwischenaundbvergangen 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_pointaber auch genau so gut ohne statischenowFunktion 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_pointre-implementieren (bzw. mir eine Implementierung mit ausreichend freizügiger Lizenz kopieren)?
Natürlich könnte ich auch einfach
durationmisbrauchen. 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.
-
Wo liegt denn das Problem dabei, einen
nowDummy zu deklarieren (ohne Definition), wenntime_pointdiese 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!