Utiliser enum comme argument de type template en C ++

existe-il des restrictions ou des problèmes à l'aide d'un enum comme modèle (type) argument en C++?

Exemple:

enum MyEnum
{
    A, B, C, D, E
};

template <typename _t>
class MyTemplate
{
public:
   _t value;

   void func(const _t& param) { /* .... */ }
};

//....

MyTemplate<MyEnum> MyInstance;

Mon réel problème à l'aide de MSVC++ par rapport à 2008 (SP1) sur Win32/x86 sont plusieurs erreurs de compilation (= les erreurs signalées par le compilateur), en association avec des classes à l'aide des enums en tant que modèle d'arguments. Comme mon projet n'a malheureusement devenir un peu complexe (vous pouvez considérer cela comme une erreur de conception :P), le modèle des classes d'augmenter ces erreurs sont dérivés, imbriqué et même spécialisés sur une classe avec enum paramètre du modèle.

Essayer de construire, le compilateur signale beaucoup de mal/inutile erreurs telles que "C2059: erreur de syntaxe: 'public'", dans les lignes où il y a seulement un commentaire. Beaucoup d'entre eux j'ai pu corrigé par le remplacement, dans les méthodes similaire à celle de l'exemple de la const _t& param par _t (c'est à dire la copie du paramètre), mais ni ce que je pourrais corriger toutes ces erreurs et je n'ai aucune idée pourquoi cette "aide". **Je sais, l'exemple simple ci-dessus compile w/o des erreurs.

À l'aide de int à la place de l'enum, mon projet se compile sans erreurs.

Merci d'avance pour tout conseil ou astuce!


Modifier:

Après tout, j'ai sérieusement considérer cela comme un bug du compilateur. Quand j'ai essayé de reproduire les erreurs de la simplification du code, je les ai seulement à 50 % de l'ensemble des "builds", pas très déterministe:
E. g. essayé de compiler, et il a signalé ces erreurs. Reconstruire - pas de changement. Supprimé un commentaire, pas de changement. Reconstruire - et puis: pas d'erreurs, compile bien.

J'ai déjà rencontré quelques bugs du compilateur (2 ou 3 je suppose que dans les 20k lignes de code), mais celui-ci me semble très étrange.
Des suggestions pour déterminer si c' est le compilateur?

source d'informationauteur dyp | 2010-08-14