Quel serait le meilleur moyen de mettre en œuvre une énumération avec des valeurs circulaires, et des fonctions appropriées pour passer d'une valeur à une autre?
Par exemple:
enum class Direction {
NORTH, EAST, SOUTH, WEST
};
constexpr Direction left(Direction d) {
return (Direction)((std::underlying_type::type(d) - 1) % 4);
}
Cependant, je trouve que c'est sujet aux erreurs et généralement illisible. Y a-t-il un moyen plus approprié de traiter ce type d'énumérations?