Récupérer la dimension d'un tableau statique à partir d'un prototype de fonction.
Bonjour,
J'ai une fonction :
Code:
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:
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:
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 :
Citation:
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 ?