using sert surtout à désambiguïser quelle version d'une fonction ou d'un type utilisé. À part pour les outils de boost qui sont hyper méga pénibles et illisibles sans ça ou un typedef, je ne m'en sers que dans des cas super rares (dont un wrapper une fois pour pouvoir debug du code faisant appel à la STL sans que gdb me dise "machin est optimisé, va donc te faire pendre", je ne savais pas encore pour "-D_GLIBCXX_DEBUG" via clang).
typedef par contre permets de définir un type comme synonyme d'un autre. Ça peut servir à raccourcir le code, bien sûr, mais aussi à donner un nom sympa à une spécialisation particulière d'un template, ou un type sous-jacent d'un conteneur ou itérateur maison.
Exemple pour le coup de la spécialisation:
template<typenameTYPE,TYPEINVALID_VAL,void(*DTOR)(TYPE)>structunique_resource{//je vous passe l'implémentation, je pense le nom parlant et l'idée assez simple?*};voidfile_close(intfd){close(fd);//je sais, c'est pas bien d'ignorer la valeur de retour, un jour je ferai une version qui permette une gestion d'erreurs plus clean}voidclean_ogl_texture(GLsizeitex){glDeleteTextures(1,&tex);}typedefunique_resource<int,-1,file_close>fd_t;typedefunique_resource<GLsizei,-1,clean_ogl_texture>gl_tex_t;
*: mais au pire je peux en mettre, c'est pas un problème.
[^] # Re: static / constexpr
Posté par freem . En réponse à la dépêche C++17 adapte le static_assert() aux usages. Évalué à 4.
Pas très synonyme pour moi ça.
usingsert surtout à désambiguïser quelle version d'une fonction ou d'un type utilisé. À part pour les outils de boost qui sont hyper méga pénibles et illisibles sans ça ou un typedef, je ne m'en sers que dans des cas super rares (dont un wrapper une fois pour pouvoir debug du code faisant appel à la STL sans que gdb me dise "machin est optimisé, va donc te faire pendre", je ne savais pas encore pour "-D_GLIBCXX_DEBUG" via clang).typedefpar contre permets de définir un type comme synonyme d'un autre. Ça peut servir à raccourcir le code, bien sûr, mais aussi à donner un nom sympa à une spécialisation particulière d'un template, ou un type sous-jacent d'un conteneur ou itérateur maison.Exemple pour le coup de la spécialisation:
*: mais au pire je peux en mettre, c'est pas un problème.