Bestehende std :: chrono time_point-Instanzen

Wie können std :: chrono time_point-Instanzen korrekt beibehalten und dann in eine andere Instanz desselben Typs zurückgelesen werden?

   typedef std::chrono::time_point<std::chrono::high_resolution_clock> time_point_t;

   time_point_t tp = std::chrono::high_resolution_clock::now();
   serializer.write(tp);
   .
   .
   .
   time_point_t another_tp;
   serializer.read(another_tp);

Die Aufrufe zum Schreiben / Lesen setzen voraus, dass die Instanz vom Typ time_point_t irgendwie in eine Bytedarstellung konvertiert werden kann, die dann auf einen Datenträger oder einen Socket usw. geschrieben oder von diesem gelesen werden kann.

Eine mögliche von Alf vorgeschlagene Lösung lautet wie folgt:

   std::chrono::high_resolution_clock::time_point t0 = std::chrono::high_resolution_clock::now();

   //Generate POD to write to disk
   unsigned long long ns0 = t0.time_since_epoch().count();

   //Read POD from disk and attempt to instantiate time_point
   std::chrono::high_resolution_clock::duration d(ns0)

   std::chrono::high_resolution_clock::time_point t1(d);

   unsigned long long ns1 = t1.time_since_epoch().count();

   if ((t0 != t1) || (ns0 != ns1))
   {
      std::cout << "Error time points don't match!\n";
   }

Hinweis: Der obige Code weist einen Fehler auf, da der endgültige instanziierte Zeitpunkt nicht mit dem Original übereinstimmt.

Im Fall des alten Stils time_t schreibt man normalerweise nur die gesamte Entität basierend auf ihrer Größe auf die Festplatte und liest sie dann auf die gleiche Weise zurück - Kurz gesagt, was wäre das Äquivalent für die neuen std :: chrono-Typen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage