Journée de travail du 24 février 2000 des GTs COOSI et SIMédia :
Programmation générique, composants et patrons de conception.
10

programmation totalement générique

template< typename A >
typename A::data_type mean( const A& aggr )
{
  typedef typename A::data_type T;
  typename T::cumul_type cumul = T::zero;
  typename A::const_iterator_type i;
  for ( i = aggr.begin(); i != aggr.end(); ++i )
    cumul += *i;
  return cumul / aggr.size();
}

int main()
{
  buffer<int_u8> buf;
  //...
  int_u8 value = mean( buf );
}



Ici, le type-paramètre est le type de l'entrée du calcul ;
la procédure est générique vis-à-vis du type des données ET du type des structures.