Les tableaux

Bon alors :
1°) using namespace std; n’est pas obligatoire !!!
si tu prefixe les noms des fonctions/variables classes par l’espace de noms approprié.
[cpp]
#include
using namespace std;
int main()
{
cout << “hello world!\n”;
}
[/cpp]
ou alors
[cpp]
#include
int main()
{
std::cout << “hello world!\n”;
}
[/cpp]

les 2 sont corrects .
2°) sizeof ca fais partis de l’API C. Et non du C++.
3°) le “return 0;” n’est pas obligatoire en C++ dans le main
4°) [cpp]int Taille;
Taille = sizeof tableau/sizeof tableau[0]; [/cpp]
int Taille = sizeof tableau/sizeof tableau[0]; c’est interdit :??:

Sachant que notre type est un tableau constant (de type T[i]), il suffit de chercher la valeur exacte du i, pour avoir la taille de notre tableau.
Je propose donc le code suivant:


#include <iostream>
template<typename T, unsigned i>
struct size
{
  enum {res= size<T, i+1>::res};
};

template<typename T, unsigned i>
struct size<T[i], i>
{
  enum {res = i};
};

int main()
{
  int tab[3];

  std::cout << size<typeof(tab), 0>::res << std::endl;
}