У меня при переезде с boost::pfr на рефлексию библиотека де/сереализации xml в ~2.5 раза быстрее собирается и на ~15% производительнее. На форке p2996, GCC 16.2 не проверял пока.
Пишите проще))) Нечего константэвалюатор фронтенда лишней работой (constexprauto& member : auto(members)) нагружать и код ненужными пространствами имён заполонять, когда meta::info в первую очередь само из своего пространства ищет.
Можно, но только для статических полей классов, структур и переменных в глобальном и/или пространстве имён. Из скупа функции такие данные получить пока нельзя.
Я просто в цикле по пакам и файлам бегал и в библиотеки собирал. До появления СМаке в кубе я СМаком парсил мэйкфайл и настраивал флаги и бинари в СМаке. По сравнению с мэйкфайлами СМаке — это как питон или lua, очередной скриптовый язык, в котором всё более-менее понятно. Само качает подключает и настраивает. Смотрю изобретателей велосипеда меньше не становиться.
Хотелось бы, чтобы для лямбд try‑catch блоки, как для функций, разрешили без внешних {}, так как в рэнжах они частые гости. Раз разрешили кидать исключения в компилятайме, то для рефлексии это было бы полезным дополнением. Минус две фигурные скобки. Мне кажется, это легко реализуемо, и поправится лишь парсер и формулировка в стандарте.
Скорее всего и дальше не захочет понимать. Ямл какой-то замороченный (питонисты заразили наверно), ещё и версии его разные несовместимы. Как такой бред сотворить моги — моё "почтение"!!! JSON и XML как придумали, так 100 лет не меняли и работают как АК.
struct storage;
consteval {
// Получаем всю необходимую нам информацию о типах
constexpr auto info = get_members_info();
meta::info members[sizeof...(Ts)];
template for(constexpr std::size_t I:
std::define_static_array(std::views::iota(0u, sizeof...(Ts))))
members[I] =
meta::data_member_spec(^^Ts...[info[I].original_idx]);
// Создаём поля структуры storage для хранения данных
meta::define_aggregate(^^storage, members);
}
alignas(Ts...) storage data;
Я себе смену "геометрического" ядра навайбкодил в 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);должна быть. Но и с возрастанием тесты тоже проходит...
Что-то такое будет примерно.
https://godbolt.org/z/j8qnfe98f
Можно ещё и так хранилище объявить.
https://godbolt.org/z/4Y8o6fW7M