using, typedef, auto ET decltype

Salut ce forum apprends les bases du c++

Moderator: Rick

Post Reply
Hydraxx
Site Admin
Posts: 114
Joined: Mon Jan 12, 2026 4:04 pm
Location: France
Contact:

using, typedef, auto ET decltype

Post by Hydraxx »

using, typedef, auto ET decltype

À 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;
Puis :

Code: Select all

ProcessId pid{1234};
Attention :

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*);
Tu peux écrire :

Code: Select all

using Callback = void(*)(int, const char*);
Puis :

Code: Select all

Callback cb{};
Beaucoup plus lisible.


3. typedef


Ancienne syntaxe :

Code: Select all

typedef unsigned long MyType;
Equivalent moderne :

Code: Select all

using MyType = unsigned long;
using est généralement plus lisible.


4. auto

Code: Select all

auto x = 42;
Le compilateur déduit :

Code: Select all

int
Pourquoi l’utiliser ?

Parce que certains types sont très longs.

Exemple :

Code: Select all

auto it = container.begin();
au lieu d’écrire le type exact de l’itérateur.


5. auto NE VEUT PAS DIRE "TYPE DYNAMIQUE"


Très important.

Code: Select all

auto x = 42;
x est définitivement un int à la compilation.

Ce n’est pas comme une variable dynamique de Python ou JavaScript.


6. auto ET POINTEURS

Code: Select all

int x{};
auto p = &x;
p est int*.

Tu peux aussi écrire :

Code: Select all

auto* p = &x;
pour montrer explicitement que tu veux un pointeur.


7. auto ET const

Code: Select all

const int x{42};
auto y = x;
y est généralement un int non const.

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{};
y est du même type déclaré que x.

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)
donne int.

Mais :

Code: Select all

decltype((x))
peut donner int& car (x) est une expression lvalue.

C’est une règle importante en métaprogrammation.


10. decltype(auto)

Code: Select all

decltype(auto) f()
{
    return (x);
}
Cela peut préserver exactement référence et qualifiers.

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.

Return to “Bases du C++”

Who is online

Users browsing this forum: No registered users and 1 guest