Nous partons de la structure suivante, devant faire partie de l'espace
  de noms 
encap dans le fichier 
struct_init.hpp :
  
struct DummyRange
{
  int low, high;
};
 
Il s'agit d'une part de faire en sorte que ce type respecte un invariant
  extrêmement simple : la borne basse doit nécessairement être
  inférieure à la borne haute.
Pour ceci, il faudra apporter toutes les modifications nécessaires à
  ce type structuré pour respecter les exigences suivantes :
- Les conventions de mise en forme de ce type et de ses membres
    doivent signifier clairement qu'un invariant est assuré.
 
- Un constructeur permettant d'initialiser librement les deux données
    membres doit être fourni.
  
- S'il constate que la borne basse est supérieure à la borne haute,
      alors il doit le signifier explicitement avec une exception de type
      std::runtime_error.
 
 
- Un constructeur attendant un seul paramètre entier width se
    contentera d'invoquer par délégation le constructeur précédent
    avec les bornes 0 et width.
 
Les définitions des constructeurs prendront place dans le fichier
  
struct_init.cpp.
D'autre part, il faut réaliser, dans le fichier 
prog_ex0401.cpp, cette
  fonction :
  
void
test_DummyRange()
{
  std::cout << "\n~~~~ " << __func__ << "() ~~~~\n";
  // ...construct correct range (one parameter)...
  std::cout << "correct range initialised\n";
  try
  {
    // ...construct incorrect range (two parameters)...
    std::cout << "incorrect range initialised\n";
  }
  catch(const std::exception &e)
  {
    std::cerr << "!!! Exception: " << e.what() << " !!!\n";
  }
}
  qui sera appelée depuis la fonction 
main().
Elle doit être complétée en déclarant à chacun des deux emplacements
  indiqués une variable de type 
DummyRange initialisée à votre
  convenance :
- la première utilisera le constructeur à un seul paramètre,
 
- la seconde utilisera celui à deux paramètres ; dans ce cas, les
    paramètres de l'initialisation devront être choisis de façon à ce que
    le constructeur lève l'exception prévue.