Est-il possible de faire le mappage Type -> Enum Series
de compilation?C++ - type de mappage à enum
Illustrant avec un exemple:
Disons que j'ai quelques Type
et une valeur dénombrée:
typedef int Type;
enum Enumerated { Enum1, Enum2, Enum3, Enum4 };
et maintenant je déclare en quelque sorte ce qui suit: « Associons Enum1
et Enum4
avec le type Type
(ne sait pas encore comment implémenter ceci)
Maintenant, je veux être en mesure de vérifier les points suivants (mieux à faire à l'aide mpl dans le temps de compilation):
Si sont effectivement mis en correspondance un certain type arbitraire et ENUM à l'autre:
template <typename ArbitraryType, Enumerated E>
struct check_at_compile_time {
// Somehow tricky evaluate this
static const bool value;
};
de sorte que les résultats sont les suivants:
check_at_compile_time<Type, Enum1>::value evaluates to TRUE
check_at_compile_time<Type, Enum2>::value evaluates to FALSE
check_at_compile_time<Type, Enum4>::value evaluates to TRUE
check_at_compile_time<int, Enum3>::value evaluates to FALSE
Si quelqu'un connaît une bonne façon de mettre en œuvre cela, s'il vous plaît aidez-moi. Peut-être quelque chose en utilisant boost::mpl
, je ne suis pas sûr.
Merci.