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 :
1 2 3 4
| template<unsigned int... TDIM, unsigned int... TDIM0> struct HelperCheckDimensions
{
static const bool ok = /* SOMETHING */
}; |
Le but est au final de pouvoir écrire :
static_assert(HelperCheckDimensions<TDIM..., TDIM0...>::ok, "ERROR : Dimensions are different !");
Comment faire cela ?
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