Moyen générique de cast int enum en C++

Est-il un générique façon de jeter int à enum dans C++?

Si int tombe dans la gamme d'un enum il doit retourner un enum valeur, autrement jeter un exception. Est-il possible de l'écrire génériquement? Plus d'un enum type doit être pris en charge.

Contexte: j'ai un externe enum type et aucun contrôle sur le code source. Je voudrais stocker cette valeur dans une base de données et de les récupérer.

  • enum e{x = 10000}; dans ce cas 9999 tomber dans la gamme de la enum?
  • Non, 9999 ne pas tomber.
  • Bonne question. Comme pour toute "pourquoi?" qui va apparaître, laissez-moi juste dire "la désérialisation" - semble une raison suffisante pour moi. Je serais également heureux d'entendre un de C++0x-compilant réponse pour enum class.
  • "Plage" est le bon mot ici, peut-être "domaine"?
  • boost::numeric_cast<> jette un effet positif ou négatif exception de dépassement de la valeur en dehors des limites. Mais pas sûr que ce qui est vrai pour les types enum ainsi. Vous pouvez essayer.
InformationsquelleAutor Leonid | 2010-11-12