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 :
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 */
};
Le but est au final de pouvoir écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?