À QUOI ÇA SERT ?
Ces outils réduisent la répétition de types complexes.
1. using COMME ALIAS
Code: Select all
using ProcessId = std::uint32_t;
Code: Select all
ProcessId pid{1234};
ProcessId n’est pas un nouveau type fort.
C’est un alias.
2. POURQUOI C’EST UTILE
Imagine :
Code: Select all
void (*callback)(int, const char*);
Code: Select all
using Callback = void(*)(int, const char*);
Code: Select all
Callback cb{};
3. typedef
Ancienne syntaxe :
Code: Select all
typedef unsigned long MyType;
Code: Select all
using MyType = unsigned long;
4. auto
Code: Select all
auto x = 42;
Code: Select all
int
Parce que certains types sont très longs.
Exemple :
Code: Select all
auto it = container.begin();
5. auto NE VEUT PAS DIRE "TYPE DYNAMIQUE"
Très important.
Code: Select all
auto x = 42;
Ce n’est pas comme une variable dynamique de Python ou JavaScript.
6. auto ET POINTEURS
Code: Select all
int x{};
auto p = &x;
Tu peux aussi écrire :
Code: Select all
auto* p = &x;
7. auto ET const
Code: Select all
const int x{42};
auto y = x;
Pourquoi ?
La déduction par valeur copie la valeur.
Pour garder une référence const :
Code: Select all
const auto& y = x;
8. decltype
Code: Select all
int x{};
decltype(x) y{};
Pourquoi decltype ?
Quand tu veux récupérer le type exact d’une expression sans connaître son nom explicitement.
Très utile avec :
- templates ;
- code générique ;
- retours complexes.
9. decltype ET PARENTHÈSES
Point subtil.
Code: Select all
int x{};
Code: Select all
decltype(x)
Mais :
Code: Select all
decltype((x))
C’est une règle importante en métaprogrammation.
10. decltype(auto)
Code: Select all
decltype(auto) f()
{
return (x);
}
Très puissant, mais il faut comprendre les catégories de valeurs.
À RETENIR
using :
alias lisible.
typedef :
ancienne syntaxe d’alias.
auto :
déduction de type à la compilation.
decltype :
interrogation du type d’une expression.
