template
void set_field_value(T& to_obj, std::string_view to_field_name, const V& from_v)
{
using M = decltype(iguana_reflect_members(to_obj));
auto tp = M::apply_impl();
constexpr auto Size = M::value();
auto index = iguana::get_index(to_field_name);
tuple_switch(index, tp, [&](auto& v) {
using type_v = decltype(std::declval().*std::declval());
to_obj.*v = (type_v)from_v;
}, std::make_index_sequence{});
}
///
struct person
{
std::string name;
int age = 0;
};
REFLECTION(person, age, name);
int main()
{
person p;
iguana::set_field_value(p, "name", "Tom");
iguana::set_field_value(p, "age", 20);
return getchar();
}