Bonjour,

J'ai une fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void f(double tab[2]) {}
Est-il possible de retrouver la dimension du tableau statique, à savoir 2, à partir du type de la fonction ?

Il est possible de déduire la dimension d'un tableau statique avec une spécialisation template:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
  template<class> struct Size;
  template<class T, size_t N> struct Size < T[N] > { enum { value = N };};
  std::cout << " size  = " << Size<double[2]>::value << std::endl; // --> 2
Toutefois, je n'arrive pas à le retrouver à partir du type de la fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
template<class> struct Traits;
 
template<class X, size_t N> struct Traits< void (X[N])>
{
  enum {value = N };
};
 
std::cout << " size  = " << Traits<decltype(f)>::value << std::endl;
ce qui donne l'erreur suivante :
error: template parameters not deducible in partial specialization:
template<class X, size_t N> struct Traits< void (X[N])>
Donc je ne sais pas si c'est possible ... des idées ?