Здравствуйте, Evgeny.Panasyuk, Вы писали:
PM>>Можно ли адаптировать B указав что это наследник A чтобы не перечислять повторно члены A?
EP>Скорей всего готового нет, но при желании можно сделать самому аналог BOOST_FUSION_ADAPT_STRUCT, с необходимыми возможностями. EP>А там точно нужно иерархия, может достаточно композиции? Плюс, если нужно проходить по полям линейно, а не иерархически, то есть fusion::flatten:
Можно и самому, я даже нашел в boost-users уже готовую реализацию. Можно и переделать иерархию на композицию. Это у меня pet project, так что возможно все
Изначальная задача — RPC на основе собственного бинарного протокола. И чем больше я смотрю на макросы FUSION_ тем больше думаю сделать все на ручной сериализацией структур, или использовать thrift.
Re[3]: BOOST_FUSION_ADAPT_STRUCT для базового класса
Здравствуйте, PM, Вы писали:
PM>Изначальная задача — RPC на основе собственного бинарного протокола. И чем больше я смотрю на макросы FUSION_ тем больше думаю сделать все на ручной сериализацией структур,
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, PM, Вы писали:
PM>>Изначальная задача — RPC на основе собственного бинарного протокола. И чем больше я смотрю на макросы FUSION_ тем больше думаю сделать все на ручной сериализацией структур,
EP>Как раз для такой задачи использовать Fusion достаточно просто — http://rsdn.ru/forum/cpp.applied/5809130.1
Собственно из той темы и решил попробовать boost.fusion Но необходимость адаптировать структуры как-то не впечатляет, и выигрыша по сравнению с сериализацией вручную почти не видно.
PM>>или использовать thrift.
EP>Thrift удобен тем, что позволяет связывать разные языки, и там afaik уже есть даже готовые серверы.
Спасибо, посмотрю.
Re[5]: BOOST_FUSION_ADAPT_STRUCT для базового класса
, там всего-то дюжина строк. PM>Собственно из той темы и решил попробовать boost.fusion Но необходимость адаптировать структуры как-то не впечатляет, и выигрыша по сравнению с сериализацией вручную почти не видно.
Если нужна только сериализация, то от BOOST_FUSION_ADAPT_STRUCT не так много пользы, считай тоже самое повторение всех полей, что и при реализации serialize вручную.
Польза появляется, если например структуру нужно не только сериализовывать, а например, брать хэш, или реализовывать operator<, operator== и т.п.
Зато при использовании BOOST_FUSION_DEFINE_STRUCT — поля описываются только один раз.
Собственно, если твои структуры это просто набор полей, несвязанных общим инвариантом — то почему бы не использовать DEFINE_STRUCT?