Обновить

Комментарии 4

Из-за проф деформации первая мысль "он совсем сдурел YOLO моделью json распозновать, там же сегментаций нужно на каждый символ... Нет, если упороться можно разметить под 50 классов (1 класс = 1 символ), обучить и использовать, но из-за NMS точность и скорость будут оч плохими... Можно же взять мультимодалку и проверять с pydantic... ". Потом начал читать и выдохнул.

Хорошая библиотека, но название будет триггерить каждого второго ML-щика связанного с Computer Vision.

Хах, кстати да, есть же YOLO модель. Но надеюсь уж ML-щики не дойдут до нюансов парсинга json.

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) { ... }
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации