Bonjour,
j'aimerais savoir s'il est possible d'ordonner un couple d'entiers à la compilation.
J'imagine que cela doit être faisable avec une classe de trait mais je ne vois pas comment faire.
Merci beaucoup!
Bonjour,
j'aimerais savoir s'il est possible d'ordonner un couple d'entiers à la compilation.
J'imagine que cela doit être faisable avec une classe de trait mais je ne vois pas comment faire.
Merci beaucoup!
Hello
Si c'est juste un couple d'entier, pas besoin de forcément passer par une classe de traits:
On peut effectivement écrire un template si nécessaire. Après si ta question s'applique à C++03... je ne sais pas, il te faut C++11 pour avoir constexpr.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 constexpr int nb1 = 4; constexpr int nb2 = 3; constexpr std::array<int,2> roger {{ nb1 < nb2 ? nb1 : nb2, nb1 < nb2 ? nb2 : nb1 }};
Bonjour,
merci pour ta réponse!
C'est à peu près ce que je veux faire mais on m'a toujours déconseillé d'utiliser ces macros.
Je pense que c'est faisable en C++03 mais s'il faut C++11 ce n'est pas un problème.
Pour information, je viens de trouver ceci :
http://www.boost.org/doc/libs/1_43_0...er/minmax.html
Je suis en train de regarder les sources pour en comprendre le principe.
Comme indiqué précédemment, peut s'inspirer de la fonction static_min de boost :
On peut par exemple implémenter une paire ordonnée comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template< int left, int right > struct static_min { static const int value = (left < right) ? left : right; };
Je ne sais pas si on peut faire mieux mais c'est un début.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template< int left, int right > struct ordered_pair { static const int min = (left < right) ? left : right; static const int max = (left > right) ? left : right; };
Partager