Как можно изменить член структуры Boost Hana?
Я могу видеть, как можно легко прочитать интроспективную структуру hana-структуры в общем случае по полю / значению, но я не могу найти какой-либо способ записи в структуру в общем.
В основном я хотел бы иметь возможность сделать что-то вроде:
boost::hana::for_each( data, boost::hana::fuse( [](auto name, auto member){
member = my_val_getter( name );
} ) );
но я не могу найти способ получить ссылку на "member", чтобы иметь возможность установить его, если я пытаюсь изменить сигнатуру метода на auto & member, это приводит к всевозможным ошибкам компиляции.
1 ответ
Похоже на повышение::hana::at_key трюк, пример использования можно найти здесь
Соответствующий фрагмент кода:
hana::for_each(hana::keys(result), [&](auto key) {
auto& member = hana::at_key(result, key);
using Member = std::remove_reference_t<decltype(member)>;
member = from_json<Member>(in);
});