プログラミングC++ boost::posix_time::ptimeのserializationには、boost/date_time/posix_time/time_serialize.hpp、を使いましょう

 しばらくぶりにboost::serializationを使った実装を書いていて、あれ?ptimeのシリアライズはどうすんだっけ?、状態になったケースについてです。
 ptimeはそのままではboost::serializationでシリアライズ出来ないので、非侵入型のserialize関数又は、save、load関数をオーバーロードしたものを用意します。そうすることで、boost:;archiveにおいて定義されているアーカイバーがシリアライズを行う際、渡されたオブジェクトの型から適切なシリアライズ関数を選択して、任意の処理を行ってくれ、めでたしめでたしということになります。
 シリアライズ関数のオーバーロードは、自分が作ったクラス等のシリアライズ用に自分で行うのが普通なのですが、boostライブラリの型等については普通自分ではやりません。今どきは用意されています。boostが用意してくれていない!という悲惨なケースに遭遇するかもしれませんが、それでも遭遇していない場合は自分でやることはあまり考えないほうが良く、既存の方法をまず探しましょう。
 で、これをやってくれているのが、boost/date_time/posix_time/time_serialize.hpp、なのでこれを使って下さい。