Bonjour.
Afin de faire de la surcharge d'opérateurs de façon "clean" à l'intérieur d'une classe variadic template du style template<unsigned int... TDIM> MyClass, j'aimerai pouvoir comparer deux TDIM... (appelés dans la suite TDIM... et TDIM0...). Il me faut donc "quelque chose" qui me renvoie true si et seulement si :
- sizeof...(TDIM) == sizeof...(TDIM0)
.
- ET TDIM[0] == TDIM0[0], TDIM[1] == TDIM0[1], ..., TDIM[n] == TDIM0[n]
Je pense qu'une structure "Helper" serait toute indiquée. Je pense à quelque chose du type :
Le but est au final de pouvoir écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template<unsigned int... TDIM, unsigned int... TDIM0> struct HelperCheckDimensions { static const bool ok = /* SOMETHING */ };
Comment faire cela ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part static_assert(HelperCheckDimensions<TDIM..., TDIM0...>::ok, "ERROR : Dimensions are different !");
Merci beaucoup
EDIT : Il y a un problème dans template<unsigned int... TDIM, unsigned int... TDIM0> struct HelperCheckDimensions parce que le compilateur va être incapable de scinder TDIM et TDIM0. Donc quel est le meilleur moyen de pouvoir faire mon static_assert ?
Partager