Std persistente :: instancias de crono_punto_tiempo

¿Cuál es la forma correcta de persistir las instancias std :: chrono time_point y luego volver a leerlas en otra instancia del mismo tipo?

   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);

Las llamadas a escritura / lectura, suponen que la instancia de tipo time_point_t, se puede convertir de alguna manera en una representación de bytes, que luego se puede escribir o leer desde un disco o un socket, etc.

Una posible solución sugerida por Alf es la siguiente:

   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";
   }

Nota: El código anterior tiene un error ya que el punto de tiempo instanciado final no coincide con el original.

En el caso del viejo estilo time_t, uno simplemente escribe toda la entidad en el disco en función de su tamaño y luego lo lee de la misma manera. En resumen, ¿cuál sería el equivalente para los nuevos tipos std :: chrono?

Respuestas a la pregunta(2)

Su respuesta a la pregunta