|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Version en ligne de l'article, en cours de rédaction : Nouvelles fonctionnalités du C++11.
Suite à la sortie de la version 4.7 de gcc la semaine dernière, voici la liste des nouvelles fonctionnalités du C++11 prise en charge par gcc, avec des exemples de code explicatif. Je publierai progressivement les fonctionnalités prises en charge dans les versions précédentes de gcc. GCC 4.7 [lien]
GCC 4.6 [lien]
GCC 4.5 [lien]
GCC 4.4 (en cours) [lien]
GCC 4.3 (prochainement)
Quelles sont les nouvelles fonctionnalités qui vous paraisse le plus intéressante ? Allez-vous utiliser (ou utilisez-vous déjà) la nouvelle version de gcc 4.7 ? Quelles fonctionnalités utilisez vous déjà ?Sources :
Remarque : le code est directement issu de la documentation de gcc, utilisable selon les termes de la licence consultable à la fin de cette page, ainsi que des drafts du comité de normalisation dont les liens sont donnés.
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
90
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 554 ![]() |
Il me semble que les paramettres sont aussi optionels pour les lambda, mais c'est à confirmer avec le standard...
|
|
10
|
|
|
#3 | |
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Citation:
Merci
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 234 ![]() |
Salut,
Excellent!!! Je me suis connecté juste pour plussoyer tous tes messages exemples, y compris celui de Klaim. Reste plus qu'à trouver un bon package mingw/gcc 4.7. EDIT: Si vous en connaissez un bon au passage...
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
00
|
|
|
#5 | |
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Citation:
Vous pouvez tester ces versions de gcc (4.6.3, 4.7.0 et 4.8) compilées pour windows : http://www.equation.com/servlet/equation.cmd?fa=fortran
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 234 ![]() |
Merci pour la réponse.
Sinon, y'a ça aussi, avec différentes compilations personnelles de sezero, ray_linn, et rubenvb. Est-ce que quelqu'un a déjà essayé, y'a des différences entre elles et celle de equation.com. Merci. Quoi qu'il en soit, je viens de télécharger celle de équation.com. Encore merci.
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 234 ![]() |
Rebonjour tout le monde,
Bon ben j'ai rapidement utilisé quelques packages, mais aucun de ce que j'ai testé n'est homogénéifié, je ne sais pas si on peut dire ça comme ça. Aussi, de ceux que j'ai testé (* voir plus bas), seule la version de TDM-GCC (tdm-gcc-4.6.1) (http://tdm-gcc.tdragon.net/download) est autodétectée par l'edi codeblocks 10.05 (http://www.codeblocks.org/downloads), mais ça c'est très secondaire. Non, le gros inconvénient, c'est que hormis TDM-GCC, tous les packages W64 utilisent la version 3.14 de l'api windows (ming w32api) qui date de fin 2009, alors que la plus récente est la 3.17 de mars 2011 (http://sourceforge.net/projects/ming...W/Base/w32api/), par contre pour la version de gcc; tdm reste sur la 4.6.1 là où les autres sont à la 4.7 Voici la liste des versions utilisées (survolées) :
J'ai pas encore approfondi la question, mais j'ai déjà l'impression qu'il faudra se taper une installation manuelle des différents "modules" pour avoir quelque chose de récent et homogène.
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 554 ![]() |
Et avec clang?
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 234 ![]() |
C'est une mini phrase qui tombe comme une soupe sur un cheveu car je ne sais pas à quel message elle se rattache. Mais je ne connais pas clang.
Et à priori je ne pense pas m'y aventurer.
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 554 ![]() |
Je ne comprends pas pourquoi, il est beaucoup plus simple a avoir sous windows que gcc, fournis a peu pret les memes features, en plus rapide, de meilleurs rapports d erreur et plus lisible si tu veux le modifier.
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 234 ![]() |
Y'a une api windows fourni avec ? Si oui, est-elle plus riche que celle de mingw ?
Merci.
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() Joel LamotteDéveloppeur de jeux vidéo Inscription : août 2004 Messages : 1 554 ![]() |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Inscription : avril 2010 Messages : 1 234 ![]() |
Je demandais ça parce qu’avec gcc mingw tu peux avoir un environnement de développement Windows presque complet en un seul package, et pas seulement le compilateur. Je verrais à l'occasion pour clang, une fois mon trio codeblocks, gcc, wxwidgets stabilisé. Aussi j'ai l'impression que codeblocks 10 débloque un peu par rapport à la version 8, le rafraichissement de la fenêtre n'est pas toujours complet.
__________________
. ....Bibliothèque de scripts utilitaires batch pour Windows (Command Line Routines) ....Tout n'est pas public ou publié encore... et mon téléchargement montre que le compteur des Downloads n'est pas à jour... |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() ![]() |
Euh, à propos des littérales définies par l'utilisateur, apparemment il faut pour l'instant préfixer le nom de la littérale par '_'
De plus il faut que le type des paramètres et le type de retour soient des types littéraux (donc pas de std::string en paramètre ni en retour). J'ai testé sur gcc 4.7 (compilé sur mingw) et clang 3.1
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#15 | ||||
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Citation:
Citation:
Citation:
Code :
A operator"" _t(const string& str) { return A(str); } Citation:
Code :
string operator"" _t(const char* str) { return string(str); } Merci pour les remarques, je complète et corrige le texte. Dans le version finale, je fournirai un projet complet compilable montrant une utilisation de ces fonctionnalités
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
||||
|
00
|
|
|
#16 |
|
Membre Expert
![]() ![]() |
Méa Culpa, ce n'est effectivement qu'un warning pour le '_', par contre sous clang ça génère une erreur à l'utilisation.
Et pour les paramètres, il faut que ce soit des littéraux (donc effectivement pas de std::string, double, float et consorts) Pour les retours, si ce n'est pas un littéral, il ne faut pas mettre l'opérateur en constexpr
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : août 2003 Messages : 4 522 ![]() |
[J'ai lu en diagonale, désolé]
Je pense qu'il est important de garder la distinction entre initializer-list et initialization-list. "Liste d'initialisation" est donc je pense une mauvaise traduction pour le N2672. Je n'ai pas forcément mieux cependant que des barbarismes à proposer: a- "liste initialisatrice" b- "liste d'initialisants" c- "liste d'initialiseurs" d- "liste d'initialisateurs"
__________________
FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++ Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. |
|
|
00
|
|
|
#18 | |
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Citation:
* le but est bien d'uniformiser l'initialisation * j'ai pas l'impression qu'utiliser le même terme peut troubler les devs
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
|
00
|
|
|
#19 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : août 2003 Messages : 4 522 ![]() |
Ce sont deux mécanismes encore plus distincts que "paramètre formel" et "paramètre réel" (aka "argument").
Ici, dans un cas il y a le mécanisme (rétrospectivement pas si bien nommé) qui permet de construire des attributs avant d'entrer dans le corps du constructeur, et dans l'autre cas la liste de paramètres réels qui pourra matcher directement les attributs (ou autres agrégats en transit) sans avoir à écrire de constructeur. Je suis d'avis d'utiliser le terme précis qui servira à traduire officiellement initializer-list. Je soupçonne qu'il n’apparaisse pas avant la traduction d'une prochaine mouture du TC++11PL. Je ne sais pas si Loic et Michel ont déjà leur petite idée sur le sujet ou non. En attendant je pense préférable d'éviter les pertes de précision en utilisant un terme unique qui n'aidera pas aux recherches dans textes et moteurs. Voilà. Cela me perturbe autant que de vouloir mélanger surcharge et redéfinition. C'est une chose que beaucoup font quand ils parlent, et pourtant on tire, sur dvpz, vers le haut en ne procédant pas à l'amalgame.
__________________
FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++ Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. |
|
|
00
|
|
|
#20 | |||||
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
J'aurais mieux fait de m'abstenir. Ca explique pourquoi j'avais pas compris ta remarque et pourquoi faire la distinction.Citation:
Code :
Donc par exemple Code :
On a bien 4 choses différentes : * les listes d'initialisation, pour initialiser les membres avant le corps du constructeur * l'initialisation des tableaux style C (array initializer) * les initializer list * l'initialisation des variables membres sans passer par un constructeur En effet, dans 2640, les 2 derniers concepts sont appelé initializer list, alors que dans N2672, on parle que du 3ème. Il faudrait que je complète alors avec le contenu de 2640 (plus complet que 2672), j'avais pensé que le point 4 ne s'appelait pas initializer list et serait abordé dans un autre point de la doc de gcc
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|||||
|
00
|
Copyright © 2000-2013 - www.developpez.com