是否可以加一个set_field_value的方法,便于通过某个字符串名称来设置对象相应成员的值
`template<typename T, typename V> 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<decltype(v)>()); 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(); }`
看起来不错。