Программы на C++. Форум разработчиков
1716511594
Anonymous
Я читаю документ P2996 (https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2996r2.html), в котором представлено отражение на языке C++. Есть несколько примеров, показывающих, как использовать эти функции. В примере 3.2 у нас есть следующий код:
[code]consteval auto member_number(int n) {
return std::meta::nonstatic_data_members_of(^S)[n];
}
[/code]
Но в примере 3.14 есть:
[code]std::vector args = {^To, ^From};
for (auto mem : nonstatic_data_members_of(^From)) {
args.push_back(reflect_value(mem));
}
[/code]
Мой вопрос: зачем нам использоватьreflect_value во втором примере? Когда нам нужно использовать эту функцию в общем случае и как мы можем знать, что произведения nonstatic_data_members_of недостаточно?
Подробнее здесь: [url]https://stackoverflow.com/questions/78525974/what-is-the-purpose-of-introducing-metareflect-value-in-c-reflection[/url]