Хабр Курсы для бэкендеров
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!

Из-за проф деформации первая мысль "он совсем сдурел YOLO моделью json распозновать, там же сегментаций нужно на каждый символ... Нет, если упороться можно разметить под 50 классов (1 класс = 1 символ), обучить и использовать, но из-за NMS точность и скорость будут оч плохими... Можно же взять мультимодалку и проверять с pydantic... ". Потом начал читать и выдохнул.
Хорошая библиотека, но название будет триггерить каждого второго ML-щика связанного с Computer Vision.
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);
}
}Пишите проще))
static_assert(IsTuple(T));
static_assert(IsBase<T>());Можно было бы в концепты.
template <std::meta::info T, <...>>
requires(IsSupported<T>()) // Проверяем, что тип поддержан текущей версией
static std::pair<char*, typename[:T:]> ParseVal(
char* curr, // указатель на начало объекта
char* end // указатель на крайнюю границу всего JSON
) { ... }
template <std::meta::info T, bool Compressed = true>
requires(IsTuple(T))
static std::pair<char*, typename[:T:]>
ParseTuple(char* curr, char* end) { ... }
YOLO‑JSON: знание [на этапе компиляции] — сила