template <typename T>
void print_(T& A, std::ostream& stream) {
// Берем информацию о типе
constexpr auto REF = ^^T;
// Получаем список членов структуры в виде статического массива
static constexpr auto REL_FLDS = std::define_static_array(
nonstatic_data_members_of(REF, std::meta::access_context::unchecked()));
// Выводим статическую итерацию по всем членам структуры
template for(constexpr auto MEMBER: REL_FLDS) {
constexpr auto NAME = std::meta::identifier_of(MEMBER);
// конвертируем рефлексию обратно для подстановки в выражение
auto& val = A.[:MEMBER:];
std::println(stream, R"("{}":{})", NAME, val);
}
}
У меня при переезде с boost::pfr на рефлексию библиотека де/сереализации xml в ~2.5 раза быстрее собирается и на ~15% производительнее. На форке p2996, GCC 16.2 не проверял пока.
Пишите проще))) Нечего константэвалюатор фронтенда лишней работой (constexprauto& member : auto(members)) нагружать и код ненужными пространствами имён заполонять, когда meta::info в первую очередь само из своего пространства ищет.
Можно, но только для статических полей классов, структур и переменных в глобальном и/или пространстве имён. Из скупа функции такие данные получить пока нельзя.
Я просто в цикле по пакам и файлам бегал и в библиотеки собирал. До появления СМаке в кубе я СМаком парсил мэйкфайл и настраивал флаги и бинари в СМаке. По сравнению с мэйкфайлами СМаке — это как питон или lua, очередной скриптовый язык, в котором всё более-менее понятно. Само качает подключает и настраивает. Смотрю изобретателей велосипеда меньше не становиться.
Хотелось бы, чтобы для лямбд try‑catch блоки, как для функций, разрешили без внешних {}, так как в рэнжах они частые гости. Раз разрешили кидать исключения в компилятайме, то для рефлексии это было бы полезным дополнением. Минус две фигурные скобки. Мне кажется, это легко реализуемо, и поправится лишь парсер и формулировка в стандарте.
Скорее всего и дальше не захочет понимать. Ямл какой-то замороченный (питонисты заразили наверно), ещё и версии его разные несовместимы. Как такой бред сотворить моги — моё "почтение"!!! JSON и XML как придумали, так 100 лет не меняли и работают как АК.
Можно было бы в концепты.
Пишите проще))
Я себе смену "геометрического" ядра навайбкодил в GGEasy)))
У меня при переезде с boost::pfr на рефлексию библиотека де/сереализации xml в ~2.5 раза быстрее собирается и на ~15% производительнее. На форке p2996, GCC 16.2 не проверял пока.
Пишите проще))) Нечего константэвалюатор фронтенда лишней работой (constexpr auto& member : auto(members)) нагружать и код ненужными пространствами имён заполонять, когда
meta::infoв первую очередь само из своего пространства ищет.(“alt”, “Alt linux”)
(“arch”, “Arch linux”)
Ограничте жор ресурсов clangd.
Можно, но только для статических полей классов, структур и переменных в глобальном и/или пространстве имён. Из скупа функции такие данные получить пока нельзя.
Отличный пример, надо поразмышлять над этой темой, появилась задачка с SQLite.
Благо gcc-16.1.1 зарелизили, можно ковырять без танцев с бубном.
Напиши статейку)))
std::flat_map/set уже есть в gcc16.
Кто-то до сих пор сидит на DOSе, обмазанном костылями от Microslop?!..
Мы с выходом GCC-16 во внутрянке во всю его применять начали, местами в 1,5 раза код похудел.
Я просто в цикле по пакам и файлам бегал и в библиотеки собирал. До появления СМаке в кубе я СМаком парсил мэйкфайл и настраивал флаги и бинари в СМаке. По сравнению с мэйкфайлами СМаке — это как питон или lua, очередной скриптовый язык, в котором всё более-менее понятно. Само качает подключает и настраивает. Смотрю изобретателей велосипеда меньше не становиться.
Руки чесались добавить в КЛанг или ГКК, но не потяну… Хотя малыми издержками есть мысли, как это добавить (вариант от ЭДГ). Или ЭДГ спереть с КЭ)))
Чем в городки с компилятором играть и приседать, использовали бы для вывода из компайлтайма в рантайм векторов и строк:
C++26 с рефлексией по круче раста местами будет.
Хотелось бы, чтобы для лямбд try‑catch блоки, как для функций, разрешили без внешних {}, так как в рэнжах они частые гости. Раз разрешили кидать исключения в компилятайме, то для рефлексии это было бы полезным дополнением. Минус две фигурные скобки. Мне кажется, это легко реализуемо, и поправится лишь парсер и формулировка в стандарте.
Скорее всего и дальше не захочет понимать. Ямл какой-то замороченный (питонисты заразили наверно), ещё и версии его разные несовместимы. Как такой бред сотворить моги — моё "почтение"!!! JSON и XML как придумали, так 100 лет не меняли и работают как АК.
В функции
get_members_inf()сортировка такаяstd::ranges::sort(res, std::greater{}, &MemberInfo::align);должна быть. Но и с возрастанием тесты тоже проходит...