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