pjmlp

While you will need C++26 for real reflection, you could use some of the libraries that make do with what is already possible via concepts, if constexpr and type traits.

For example,

- https://www.boost.org/doc/libs/latest/doc/html/boost_pfr.htm...

- https://github.com/getml/reflect-cpp

And kudos for using modern C++.

fsloth

“mapping plain functions → JSON schemas”

In general I’ve found it’s much better in C++ to be verbose and plain rather than succinct and elegant.

Javascript and python lack typing so being pithy&clever in those languages has entirely different implications than in C++.

“How can I express this in the most basic, unsurprising and plainspoken C++” is usually the right question to ask. “How can I make this more elegant” is a question better suited for other languages imho.

The best C++ API when in doubt is a C style API.

show comments
bergesenha

The json library 'glaze' has working compile time reflection for MSVC, Clang and GCC using some tricks with aggregate initializable structs. In addition to being a performant json library, it comes with the functions glz::apply and glz::to_tie which I used for general tool calling straight from deserialized json.

rubymamis

Very nice! I might get inspire for my own Qt C++ LLM client[1]. Do you plan to add streaming Markdown parsing? It's a challenging problem that was very fun implementing for Vox -> it allows parsing code blocks and other such advance/custom blocks (I created a custom 'tool' block) without re-rendering. My implementation is currently tied to Qt's C++ but I might make it more generic and open source it.

[1] https://www.get-vox.com/

sylware

I was wondering, has anybody tried to use AI to port c++ to C?