Информация об изменениях

Сообщение Re[18]: Не могу понять ссылки в C++ от 30.06.2024 7:48

Изменено 30.06.2024 7:50 rg45

Re[18]: Не могу понять ссылки в C++
Здравствуйте, andrey.desman, Вы писали:

AD>Так не томи уже.

AD>boost::describe года 3 как вышел, не очень-то окаменеть успело. Хотя хз какой именно буст имеется в виду.

Чтоб не затягивать интригу, опишу пока на словах. Подход основан на том, что структуры раскладываются при помощи structured binding. Следующий "финт ушами" — это построить констрейнт поверх structured binding. Ну а дальше дело техники: сначала делаем унивирсальный компайл-тайм визитор, позволяющий декомпозировать объект произвольной структуры в произвольную вызываемую сущность. Разумеется, вызов визитора также защищен констрейнтом. Ну а поверх этого уже можно делать и операторы, и сериализацию и т.д. и т.п. Вложенность структур поддерживается автоматом. Конечно же, такой подход дает доступ к значениям полей структуры, но не дает доступа к именам мемберов. Для бинарной сериализации этого вполне достаточно.
сериализацию в xml и json, для которых требуются сигнатуры полей, тоже можно костылить, в принципе, но сигнатуры придется как-то генерить.

Более-менее функциональный пример сказанного будет вечером.
Re[18]: Не могу понять ссылки в C++
Здравствуйте, andrey.desman, Вы писали:

AD>Так не томи уже.

AD>boost::describe года 3 как вышел, не очень-то окаменеть успело. Хотя хз какой именно буст имеется в виду.

Чтоб не затягивать интригу, опишу пока на словах. Подход основан на том, что структуры раскладываются при помощи structured binding. Следующий "финт ушами" — это построить констрейнт поверх structured binding. Ну а дальше дело техники: сначала делаем унивирсальный компайл-тайм визитор, позволяющий декомпозировать объект произвольной структуры в произвольную вызываемую сущность. Разумеется, вызов визитора также защищен констрейнтом. Ну а поверх этого уже можно делать и операторы, и сериализацию и т.д. и т.п. Вложенность структур поддерживается автоматом. Конечно же, такой подход дает доступ к значениям полей структуры, но не дает доступа к именам мемберов. Для бинарной сериализации этого вполне достаточно. Сериализацию в xml и json, для которых требуются сигнатуры полей, тоже можно костылить, в принципе, но сигнатуры придется как-то генерить.

Более-менее функциональный пример сказанного будет вечером.