Я бы сказал, да, за исключением вопросов с порядком байтов. Т.е. если вы сохраните его на машине с прямым порядком байтов и прочитаете ее с помощью машины с прямым порядком байтов, вы получите неправильный ответ.
Поскольку sys_time<nanoseconds>
не является POD, вы также можете просто извлечь его встроенный POD значение и сохраните его как двоичный файл:
auto i = (td-sys_seconds{})/1ns;
или
auto i = td.time_since_epoch().count();
И тогда проблема, не связанная с POD, исчезнет. При чтении, просто:
sys_time<nanoseconds> td{nanoseconds{i}};
Я верю в C ++ 20, вы даже можете упростить до:
sys_time td{nanoseconds{i}};
хотя я еще не уверен, что это реализовано где-нибудь еще.