Я не думаю, что это можно сделать без изменения библиотеки boost для его поддержки.
Я не знаю конкретно, как реализована библиотека boost regex, но большинство библиотек regex компилируют вещи в двоичный файлBLOB-объект, который затем интерпретируется как серия инструкций для своего рода ограниченной виртуальной машины.
Если библиотека регулярных выражений boost реализована таким образом, ее сериализация будет относительно простой.Просто возьмите двоичный двоичный объект как-нибудь и сбросьте его на диск.Существование POSIX regex API для библиотеки наддува говорит мне, что, вероятно, именно так оно и реализовано.
OTOH, еще один способ его реализации (и не очень распространенный) - этогенерировать что-то вроде абстрактного синтаксического дерева для регулярного выражения.Это означает, что отдельные части регулярного выражения будут представлены их собственными объектами, и эти объекты будут связаны вместе в какую-то более крупную структуру, представляющую все регулярное выражение.
Если boost делает это таким образом, то сериализация будет оченьcomplex.
Это невозможно с C ++, но я действительно хотел бы, чтобы boost мог компилировать регулярные выражения с константными строками во время компиляции с помощью шаблонного метапрограммирования.Причина, по которой это невозможно, состоит в том, что невозможно перебрать содержимое строки (даже константную строку) с помощью шаблона.