続 hamigaki::uuid::serialize()

Boost.Uuidのコードと見比べて、実装レベルをprimitive_typeすることで昨日の問題を解決できることに気が付きました。

#include <boost/serialization/level.hpp>
BOOST_CLASS_IMPLEMENTATION(hamigaki::uuid, boost::serialization::primitive_type)

としておくと、アーカイバがテキストの場合は挿入子(operator>>)と抽出子(operator<<)を使ってストリームと直接データのやり取りをし、バイナリの場合はbinary_objectを使ったときのように動作します。
ドキュメントにも挿入子と抽出子を実装しろとは書いてないので分かりにくいですね。


というわけで、実質的な修正は挿入子と抽出子の実装になりました。
uuid.hppの差分
なお、実装レベルがprimitive_typeの場合、serialize()関数は全く使われないので削除しています。