Avatar ·

¿Cuál es la diferencia entre typedef y using en C++? ¿Qué elegir?

¡Hola a todos! Estoy aprendiendo C++ y me encontré con dos formas de crear alias para tipos: el viejo `typedef` y el nuevo `using` de C++11. Parece que hacen lo mismo, pero he oído que `using` se ha vuelto preferible. ¿Pueden explicar cuál es la diferencia fundamental? Aquí hay un ejemplo simple con `typedef`: ```cpp typedef unsigned long ulong; typedef int (*func_ptr)(double, char); typedef std::vector int_vector; ``` Y lo mismo con `using`: ```cpp using ulong = unsigned long; using func_ptr = int(*)(double, char); using int_vector = std::vector; ``` Por sintaxis, `typedef` me parece más confuso, especialmente para punteros a funciones. Pero, ¿hay diferencias funcionales? Por ejemplo, he oído que `using` funciona con templates, mientras que `typedef` no. ¿Pueden dar ejemplos de cuándo `using` es mejor, y si vale la pena usar `typedef` en código nuevo? ¡Gracias de antemano! <<>>

Diferencia principal: alias de templates

La principal y más fundamental