I've two enums as below:
enum TTT {t = 2};
enum XXX {x = 2};
I'm trying to make some struct to help me get the name of an enum. Here is what I've done:
template<TTT>
struct StrMyEnum {
    static char const* name() { return "unknown"; }
};
template<>
struct StrMyEnum<t> {
    static char const* name() { return "tt"; }
};
It works. Now I can get the name of the enum t: StrMyEnum<t>::name().
However, if I write another group of template structs for XXX, it doesn't seem to work.
template<XXX>
struct StrMyEnum {
    static char const* name() { return "unknown"; }
};
template<>
struct StrMyEnum<x> {
    static char const* name() { return "xx"; }
};
Now I get a compile error: could not convert 'x' from 'XXX' to 'TTT'. It seems that the compiler is trying to match the StrMyEnum<x> with TTT...
I don't know why.
So template can't distinguish the different enums? Is it possible to write some structs for different enums?
Aucun commentaire:
Enregistrer un commentaire