28 августа 2009

Boost Tuple Serialization

Сложно поверить, но в Boost-е нет сериализации для tuple.

Видимо вся фигня в том, что при сериализации кортежей нужно написать сериализацию для кортежей 0..N элементов, а это можно сделать:
а) руками: написать вручную сериализацию для 0, 1, 2 и т.д. элементов, что совсем не кошерно;
б) препроцессором: использовать boost preprocessor - тоже считается не очень кошерно;
в) компилятор: но тут вся загвоздка как я понял в том, что это нельзя сделать используя публичный интерфейс tuple, можно только зная особенности реализации (details), что тоже вроде бы не очень кошерно.

В результате был выбран списоб "г" - вообще не писать сериализацию для tuple. Что я считаю полным бредом.

PS. Если что - есть готовая реализация через препроцессор.

1 комментарий:

familom комментирует...

А еще там нету портабельных бинарных архивов. По причине того, что видите ли только "почти 100%" платформ, а не "100%", поддерживают IEEE-754, и поэтому числа с плавающей точкой портабельно сериализовать в бинарный формат сложно. Разработчиков Google protocol buffers и QDataStream это, например, не остановило.