Pas directement, mais vous pouvez utiliser l'astuce suivante :
enum class Example { A, B, C, D, E, Count };
La cardinalité est alors disponible sous la forme static_cast<int>(Example::Count)
.
Bien sûr, cela ne fonctionne que si vous laissez les valeurs de l'enum être automatiquement attribuées, en commençant par 0. Si ce n'est pas le cas, vous pouvez attribuer manuellement la cardinalité correcte à Count, ce qui n'est pas vraiment différent de devoir maintenir une constante séparée de toute façon :
enum class Example { A = 1, B = 2, C = 4, D = 8, E = 16, Count = 5 };
Le seul inconvénient est que le compilateur vous permettra d'utiliser Example::Count
comme argument pour une valeur d'énumération -- donc soyez prudent si vous utilisez ceci ! (Je trouve personnellement que ce n'est pas un problème en pratique, cependant).