lang:cpp:condition
                Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| lang:cpp:condition [2020/02/17 07:00] – Ajout de "switch" et les classes avec constructeur non default et déplacement de constexpr de C -> C++ root | lang:cpp:condition [2020/06/16 15:15] (Version actuelle) – Fix typo root | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====if==== | ====if==== | ||
| - | ===fold (opérateur ...)=== | + | |
| + | Les '' | ||
| + | |||
| + | ===Conditions multiples sur une même valeur : fold (opérateur ...)=== | ||
| Avec les templates variadiques : | Avec les templates variadiques : | ||
| Ligne 22: | Ligne 25: | ||
| ====switch/ | ====switch/ | ||
| + | |||
| + | Les '' | ||
| ===Déclaration d'une variable dans un switch=== | ===Déclaration d'une variable dans un switch=== | ||
| - | Une variable définie dans un '' | + | Une variable définie dans un '' | 
| Il est donc conseillé de mettre des '' | Il est donc conseillé de mettre des '' | ||
| - | < | + | < | 
| class A | class A | ||
| { | { | ||
| Ligne 47: | Ligne 52: | ||
| { | { | ||
| case 0: | case 0: | ||
| + | // Valide car la classe A a un constructeur default. | ||
| A a; | A a; | ||
| // Non car si i vaut 1, le constructeur b ne sera pas appelé. | // Non car si i vaut 1, le constructeur b ne sera pas appelé. | ||
| Ligne 92: | Ligne 98: | ||
| </ | </ | ||
| - | <note important> | + | <WRAP center round important | 
| + | Toute création d'un hash présente un risque de collision. | ||
| + | </WRAP> | ||
| - | ====[[unlikely]] et [[likely]]==== | ||
| - | Il est possible d' | ||
| - | |||
| - | <code cpp> | ||
| - | int i = 1; | ||
| - | if (i == 1) [[likely]] | ||
| - | ... | ||
| - | </ | ||
| - | |||
| - | <code cpp> | ||
| - | int f(int i) | ||
| - | { | ||
| - | switch(i) | ||
| - | { | ||
| - | case 1: return 1; | ||
| - | [[likely]] | ||
| - | case 2: return 2; | ||
| - | [[unlikely]] | ||
| - | default: return 3; | ||
| - | } | ||
| - | return 2; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Code généré sans les attributs '' | ||
| - | |||
| - | gcc est utilisé et les options d' | ||
| - | |||
| - | <code asm> | ||
| - | f(int): | ||
| - | mov eax, edi | ||
| - | cmp edi, 1 | ||
| - | je .L2 | ||
| - | cmp edi, 2 | ||
| - | mov edx, 3 | ||
| - | cmovne | ||
| - | .L2: | ||
| - | ret | ||
| - | </ | ||
| - | |||
| - | Code généré avec les attributs '' | ||
| - | |||
| - | <code asm> | ||
| - | f(int): | ||
| - | mov eax, edi | ||
| - | cmp edi, 1 | ||
| - | je .L2 | ||
| - | cmp edi, 2 | ||
| - | jne .L8 | ||
| - | .L2: | ||
| - | ret | ||
| - | .L8: | ||
| - | mov eax, 3 | ||
| - | ret | ||
| - | </ | ||
lang/cpp/condition.1581919244.txt.gz · Dernière modification :  de root
                
                