Bonjour,
J'ai deux questions :
- Quel est le meilleur moyen de borner un type ?
Par exemple un int compris dans l'intervalle [a,b], y a-t-il une meilleure solution que quelque chose du genre std::max(a,std::min(i,b)) ?
- Comment éviter de "dépasser" un type ?
Ex :
Faut-il créer un wrapper qui redéfinisse les opérateurs avec des tests du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 typedef unsigned char byte; byte a = 128; a += 128; //a=0;
Est-ce une solution portable pour tous les types ? Y a-t-il une solution moins gourmande ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 //addition T& operator +=(const T& other) { T d = std::numeric_limits<T>::max() - *this; //espace restant if (other>=d) *this = std::numeric_limits<T>::max(); else *this += other; return *this; }
Existe-t-il une implémentation performante pour ce genre de problèmes dans une librairie ?
Merci !
Partager