Bonjour à tous et bonne année !

Je cherche à trouver le mécanisme en C++ qui permet de gérer dynamiquement les types lors d'une division en fonction des nombres entrés par l'utilisateur.
La division que je cherche à implémenter doit avoir les règles suivantes (le type des opérandes et du résultat est noté entre crochets) :
  • a [float] divisé par b [float] renvoie a/b [float]
  • a [int] divisé par b [float] renvoie a/b [float]
  • a [float] divisé par b [int] renvoie a/b [float]
  • Le cas difficile : a [int] divisé par b [int] renvoie la division entière a/b [int] ssi a % b = 0, sinon renvoie la division flottante (float)a/b [float]


Exemple d'exécution (le code tapé par l'utilisateur est rouge) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
>> Entrez le nombre initial : 4
>> Entrez le diviseur : 2
Résultat : 2 [int]
>> Entrez le diviseur : 1
Résultat : 2 [int]
>> Entrez le diviseur : 2
Résultat : 0.5 [float]
>> Entrez le diviseur : 3
Résultat : 0.16666666 [float]

etc.
Je n'arrive pas à écrire la boucle qui permette de se "souvenir" au moment de l'exécution du type du résultat d'une itéartion à l'autre, et de renvoyer le type ad hoc en fonction du type et de la valeur des arguments.
Ma première idée était de surcharger quatre fois une fonction div pour int et float, mais ce n'est pas possible car en C++ il n'est pas possible de décider d'un type de retour en fonction de la valeur des arguments à l’exécution...

Des idées ?

Jean