Я экспериментирую с новыми функциями отражения времени компиляции C ++ (как описано в P2996R0), и я тестирую простую утилиту Enum_to_string с использованием шаблона для:
template
requires std::is_enum_v
constexpr std::string enum_to_string(E value) {
template for (constexpr auto e : std::meta::members_of(^E)) {
if (value == [:e:]) {
return std::string(std::meta::name_of(e));
}
}
return "";
}
< /code>
Как я понимаю, это не обычный цикл, а скорее развертывание повторного кода с различными заменами шаблонов. Совместим ли этот механизм с функциями начала /конечности, используемым в диапазоне для петли? Полагается ли шаблон для начала/конец?
Есть ли какие-либо формальные требования для правой стороны шаблона? Нужно ли моделировать конкретную концепцию или структуру?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ork-in-c26