ureflect¶
Header-only C++23 compile-time reflection library
Zero-runtime, macro-free, dependency-free.
Key features¶
- Compile-time introspection for structs and enums
- Generates:
member_names<T>— field namesmember_types<T>— field typesto_tie(obj)— tuple of references
- No RTTI, no macros, no allocations
- Up to 128 fields supported
- Fully constexpr and header-only
- Compatible with Clang ≥16, GCC ≥13, MSVC ≥19.36
struct User {
int id;
std::string name;
double balance;
};
int main() {
User u{1, "Alice", 42.5};
ureflect::for_each_field(u, [](std::string_view name, auto &value) {
std::cout << name << ": " << value << '\n';
});
ureflect::for_each_field(u, [](std::string_view, auto &v) {
if constexpr (std::is_same_v<std::remove_reference_t<decltype(v)>, double>)
v += 10.0;
});
ureflect::for_each_field(u, [](std::string_view name, auto &value) {
std::cout << name << ": " << value << '\n';
});
}