Avatar ·

Qual é a diferença entre typedef e using em C++? O que escolher?

Olá a todos! Estou estudando C++ e me deparei com duas maneiras de criar aliases para tipos: o bom e velho `typedef` e o novo `using` do C++11. Parece que fazem a mesma coisa, mas ouvi dizer que `using` se tornou preferível. Vocês podem explicar qual é a diferença fundamental? Aqui está um exemplo simples com `typedef`: ```cpp typedef unsigned long ulong; typedef int (*func_ptr)(double, char); typedef std::vector int_vector; ``` E o mesmo com `using`: ```cpp using ulong = unsigned long; using func_ptr = int(*)(double, char); using int_vector = std::vector; ``` Em termos de sintaxe, `typedef` me parece mais confuso, especialmente para ponteiros para funções. Mas existem diferenças funcionais? Por exemplo, ouvi dizer que `using` funciona com templates, enquanto `typedef` não. Vocês podem dar exemplos de quando `using` é vantajoso, e se vale a pena usar `typedef` em código novo? Desde já, obrigado! <<>>

Diferença principal: aliases de template

A principal e mais fundamental