2010-04-10 4 views
2

je modèle qui ressemble à ceci:comment instancier modèle de modèle

100 template<size_t A0, size_t A1, size_t A2, size_t A3> 
101 struct mask { 
103  template<size_t B0, size_t B1, size_t B2, size_t B3> 
104  struct compare { 
105   static const bool value = (A0 == B0 && A1 == B1 && A2 == B2 && A3 == B3); 
106  }; 
107 }; 
... 
120 const typename boost::enable_if_c< 
121 mask<a,b,c,d>::compare<2,3,0,1>::value || ...>::type 

Je suis en train de instancier la structure comparer. Comment puis-je obtenir de la valeur à la ligne 121?

+1

Où se trouve exactement le problème? –

+0

l'analyseur étouffe. Ma conjecture 'comparer <2', 121, est interprété comme une comparaison plutôt que le modèle – Anycorn

+0

vous pouvez essayer typedefing masque :: comparer <2,3,0,1> à un seul nom pour le voir, il aide, vérifiez également que vous n'avez pas de double-angle crochets >> qui va confondre l'analyseur. – James

Répondre

6

Vous avez probablement besoin de modèle avant de comparer:

120 const typename boost::enable_if_c< 
121 mask<a,b,c,d>::template compare<2,3,0,1>::value || ...>::type 
+0

réellement essayé avant, cependant négligé errant ( Mais maintenant il compile, merci. – Anycorn

1

Oh, je pense que vous avez besoin:

const typename boost::enable_if_c< __typename__ mask<a,b,c,d>::compare<2,3,0,1>::value || ...>::type 
Questions connexes