Instâncias std :: chrono time_point persistentes

Qual é a maneira correta de persistir instâncias std :: chrono time_point e depois lê-las novamente em outra instância do mesmo 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);

As chamadas para gravação / leitura assumem que a instância do tipo time_point_t pode, de alguma forma, ser convertida em uma representação de bytes, que pode ser gravada ou lida em um disco ou soquete etc.

Uma possível solução sugerida por Alf é a seguinte:

   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: O código acima tem um erro, pois o ponto de tempo instanciado final não corresponde ao original.

No caso do estilo antigo time_t, normalmente apenas se grava toda a entidade no disco com base em seu tamanho e, em seguida, lê-a da mesma maneira - Em resumo, qual seria o equivalente para os novos tipos std :: chrono?

questionAnswers(2)

yourAnswerToTheQuestion