Всем доброго времени суток. Сабж в заголовке, а вопрос в следующем: С помощью кого из данных сверху господ можно максимально близко приблизиться к рефлексии, или даже реализовать возможность автоматической сериализации юзер типов(которые включают как другие юзер типы, так и базовые)? Заранее спасибо за ответы, советы, рекомендации и ссылки на материал.
Рефлексия в С++ есть только в минимальных количествах и до адекватной сериализации еще как до луны. std::tuple вообще не в тему.
boost.Hana#include <iostream>
#include <string>
#include <cstdlib>
#include <boost/hana.hpp>
template< typename T >
void serialize(::std::ostream& output, T const & object)
{
::boost::hana::for_each
(
::boost::hana::members(object)
, [&](auto const & member)
{
output << member << std::endl;
}
);
}
struct Person
{
BOOST_HANA_DEFINE_STRUCT
(
Person
, (::std::string, name)
, (int, age)
);
};
int main()
{
Person john{"John", 30};
serialize(std::cout, john);
return 0;
}
online compiler
Вариант с псевдорефлексией на кодогенерации реализован например в Qt MOC.
Вариант с псевдорефлексией на дефектах стандарта реализован в Loophole.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости