Nous nous appuierons sur une structure 
GenFraction, devant faire
  partie de l'espace de noms 
generic dans le fichier 
filter.hpp.
Elle n'est composée que de deux membres 
numer et 
denom dont
  le type (
template) pourra être choisi lors de la création d'une
  telle structure.
Il s'agit d'une part de fournir, dans le fichier 
filter.hpp,
  une fonction 
for_each_above() appartenant à l'espace de noms
  
generic et ayant le prototype suivant :
- elle ne renvoie aucun résultat,
 
- elle doit parcourir une séquence délimitée par deux itérateurs passés
    en paramètres,
 
- elle consulte en paramètre une donnée de type GenFraction<T>
    (dont les membres sont d'un type quelconque),
 
- elle attend en paramètre une lambda-closure qui pourra être
    invoquée sur certains éléments de la séquence.
 
Puisqu'il s'agit d'une fonction 
template, elle sera directement
  définie dans le fichier d'en-tête.
Elle se contente de parcourir la séquence indiquée grâce à l'algorithme
  
std::for_each() :
- pour chaque élément elem rencontré dans la séquence,
  
- s'il est supérieur à la fraction spécifiée (elem*denom>numer),
    
- invoquer la lambda-closure transmise, avec comme unique
        paramètre elem.
 
 
 
 
D'autre part, il faut réaliser, dans le fichier 
prog_ex0302.cpp, cette
  fonction :
void
test_for_each_above()
{
  std::cout << "\n~~~~ " << __func__ << "() ~~~~\n";
  const generic::GenFraction<int> fraction{13, 2};
  const std::array<double, 9> da={1.1, 4.4, 9.9, 2.2, 8.8, 7.7, 5.5, 3.3, 6.6};
  // ...use for_each_above() on da and fraction (display)...
  std::vector<double> dv={1.1, 4.4, 9.9, 2.2, 8.8, 7.7, 5.5, 3.3, 6.6};
  // ...use for_each_above() on dv and fraction (multiply by -1.0)...
  for(const auto &elem: dv)
  {
    std::cout << elem << ' ';
  }
  std::cout << '\n';
}
  qui sera appelée depuis la fonction 
main() ; elle doit être
  complétée en suivant les commentaires..
Il faut appliquer la fonction 
for_each_above() aux éléments de
  
da afin de les confronter à 
fraction et les afficher s'ils
  lui sont supérieurs (il ne s'agit donc que d'une consultation de quelques
  éléments de 
da).
Il faut ensuite appliquer la fonction 
for_each_above() aux éléments de
  
dv afin de les confronter à 
fraction et inverser leur signe
  s'ils lui sont supérieurs (il s'agit donc d'une modification de quelques
  éléments de 
dv).