Avatar ·

Quelle est la différence entre typedef et using en C++ ? Que choisir ?

Bonjour à tous ! J'apprends le C++ et je suis tombé sur deux façons de créer des alias pour les types : le bon vieux `typedef` et le nouveau `using` de C++11. Apparemment, ils font la même chose, mais j'ai entendu dire que `using` est devenu préférable. Pouvez-vous expliquer quelle est la différence fondamentale ? Voici un exemple simple avec `typedef` : ```cpp typedef unsigned long ulong; typedef int (*func_ptr)(double, char); typedef std::vector int_vector; ``` Et la même chose avec `using` : ```cpp using ulong = unsigned long; using func_ptr = int(*)(double, char); using int_vector = std::vector; ``` Syntaxiquement, `typedef` me semble plus confus, surtout pour les pointeurs de fonctions. Mais y a-t-il des différences fonctionnelles ? Par exemple, j'ai entendu dire que `using` fonctionne avec les templates, mais pas `typedef`. Pouvez-vous donner des exemples où `using` l'emporte, et faut-il encore utiliser `typedef` dans du nouveau code ? Merci d'avance ! <<>>

Différence principale : les alias de templates

La différence la plus fondamentale