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 statischenow()
Funktion ja auch nicht. Ist halt nur praktisch und natürlich auch sicherer, da es garantiert dass man beim Rechnen mittime_point
s immer das rausbekommt was man sich erwartet, nämlich beib-a
dieduration
die zwischena
undb
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 statischenow
Funktion verwenden. Wenn es im Standard denn erlaubt wäre. Was es leider nicht istKennt 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.
-
Wo liegt denn das Problem dabei, einen
now
Dummy zu deklarieren (ohne Definition), wenntime_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 anderesAber danke für den Vorschlag!