Как можно изменить член структуры Boost Hana - PullRequest
0 голосов
/ 14 сентября 2018

Я могу видеть, как можно легко читать из интроспективной структуры boost hana в целом по полю / значению, но я не могу найти способ записать в структуру в общем.

В основном яхотел бы иметь возможность сделать что-то вроде:

boost::hana::for_each( data, boost::hana::fuse( [](auto name, auto member){
     member = my_val_getter( name );
} ) );

, но я не могу найти способ получить ссылку на "член", чтобы иметь возможность установить его, если я пытаюсь изменить методподпись auto & member приводит к всевозможным ошибкам компиляции.

1 Ответ

0 голосов
/ 14 сентября 2018

выглядит как boost :: 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);
});
...