C++26 提案中推进的编译期 for 循环(template for)。
折叠表达式,可以被简化为下面这样:
template<typename T>
void print_fields(const T& obj) {
constexpr auto members = std::meta::nonstatic_data_members_of(
^^T, std::meta::access_context::unchecked()
);
// C++26 语法:直接在编译期展开循环!
// 自动为每一个成员生成独立的作用域,再也不需要 index_sequence 和折叠表达式了
template for (constexpr auto member : members) {
constexpr auto name = std::meta::identifier_of(member);
auto& value = obj.[:member:];
// 假设我们有一个简单的计数器或直接打印
print_value(name, value);
}
}
--
FROM 113.132.10.*