Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++
C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/05/2012, 18h27   #21
Luc Hermitte
Expert Confirmé Sénior

 
Avatar de Luc Hermitte
 
Inscription : août 2003
Messages : 4 521
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2003
Messages : 4 521
Points : 5 732
Points : 5 732
Ce n'est pas un autre mécanisme, mais un cas particulier.
Dans le FDIS(n3290), §8.5/16, §8.5.1/2 et §8.5.4 on voit que le vieux truc servant à initialiser s'appelle maintenant initializer-list et que le mécanisme est une List-Initialization (j'avoue, je peux simplifier: j'ai parcouru en vitesse)

Après, le nouveau standard nous fournit maintenant un mécanisme pour intercepter ces initializer-list (std::initializer_list) dans nos constructeurs ou ailleurs quand des retransmissions non triviales sont requises (comme pour initialiser les éléments d'un conteneur que nous implémentons).
__________________
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.
Luc Hermitte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2012, 22h07   #22
Kalith
Membre éprouvé
 
Homme
Doctorant en astrophysique
Inscription : juin 2007
Messages : 310
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Doctorant en astrophysique

Informations forums :
Inscription : juin 2007
Messages : 310
Points : 420
Points : 420
Au niveau de (petite faute de grammaire, au passage) :
Citation:
Envoyé par gbdivers Voir le message
Sizeof étendu [N2253]

Dans le C++98, il n'est pas possible de faire référence dans sizeof à une données membres non statique. Le C++11 supprime cette limitation.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
struct C {
   static T1 m1;
   T2 m2;
   void foo() const;
};
 
sizeof(C::m1); // ok
C c;
sizeof(c.m2); // ok
sizeof(m2); // erreur en C++98, valide en C++11
C::foo() { sizeof(m2); } // erreurC++98, valide en C++11
 
sizeof(((C*) 0)->m); // hack possible pour contourner en C++98
J'ai peut être mal compris ce point là, mais l'exemple de code me paraît louche :
Code :
sizeof(m2); // erreur en C++98, valide en C++11
N'est-ce pas plutôt C::m2 ?

Code :
sizeof(((C*) 0)->m); // hack possible pour contourner en C++98
Il n'y a pas de variable m dans la classe C, j'imagine que tu voulais écrire m2.

Sinon j'en profite aussi pour te signaler qu'il manque un mot dans cette phrase :
Citation:
Envoyé par gbdivers Voir le message
Le mot clé default peut être utilisé avec n'importe quelle fonction qui peut être générée automatiquement par le compilateur (son utilisation peut même être redondante). Le mot clé delete peut être utilisé avec n'importe quelle fonction. Il est ainsi possible d'éviter les conversions implicites des paramètres entrant :
Quoi qu'il en soit, merci pour ces descriptions
Kalith est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2012, 14h24   #23
gbdivers
Expert Confirmé Sénior

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 318
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 318
Points : 19 564
Points : 19 564
@Kalith
Merci, c'est corrigé
__________________
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.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2012, 12h50   #24
JolyLoic
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 679
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 4 679
Points : 9 906
Points : 9 906
Citation:
Envoyé par Luc Hermitte Voir le message
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.
Je ne suis sur aucun projet secret de ce type actuellement, et j'avoue ne pas avoir de bonne idée de traduction qui me vienne comme ça.

Je pense que liste d'initialisation est déjà passé dans le "langage courant" pour l'initialisation des données membre avant le corps du constructeur, et qu'on ne peut plus le changer. Peut-être que si je devais traduire initializer-list, je partirais vers quelque-chose de plus verbeux, comme liste permettant l'initialisation, ou liste de valeurs initiales.
JolyLoic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2012, 16h18   #25
minnesota
Membre Expert
 
Inscription : avril 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 1 239
Points : 1 608
Points : 1 608
Même en anglais c'est pas ça, car dans le nouveau cas, on ne peut pas vraiment parler de liste, non ?

Sinon, on peut peut-être affiner avec des adjuvants comme implicite, explicite, primaire, déclarative, pre (pre-initialisation), je ne sais pas, mais c'est évident qu'il faut pouvoir faire la différence.
__________________
.
NTMaxTools
....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...
minnesota est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2012, 14h02   #26
Klaim
Expert Confirmé
 
Avatar de Klaim
 
Homme Joel Lamotte
Développeur de jeux vidéo
Inscription : août 2004
Messages : 1 555
Détails du profil
Informations personnelles :
Nom : Homme Joel Lamotte
Localisation : France

Informations professionnelles :
Activité : Développeur de jeux vidéo
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 1 555
Points : 2 971
Points : 2 971
Citation:
Même en anglais c'est pas ça, car dans le nouveau cas, on ne peut pas vraiment parler de liste, non ?
Pourquoi pas? C'est bien un conteneur qui liste des valeurs d'initialisation.
Klaim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2012, 21h55   #27
minnesota
Membre Expert
 
Inscription : avril 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 1 239
Points : 1 608
Points : 1 608
Au temps pour moi, je confondais avec le fait de pouvoir initialiser des données membres non statiques dans la déclaration de la classe.

Ben dans ce cas, autant appeler ça "liste d'initialiseur", c'est pas choquant, mais le mot n'existe pas en effet, peut être "liste d'initiateur", sinon, "liste d'affectation", "liste d'assignation".
__________________
.
NTMaxTools
....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...
minnesota est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/06/2012, 00h04   #28
Luc Hermitte
Expert Confirmé Sénior

 
Avatar de Luc Hermitte
 
Inscription : août 2003
Messages : 4 521
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : août 2003
Messages : 4 521
Points : 5 732
Points : 5 732
Liste d'affectation bof. D'assignation, non! (on n'assigne pas en informatique, on affecte)
__________________
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.
Luc Hermitte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2012, 10h56   #29
dragonjoker59
Membre Expert
 
Homme Sylvain DOREMUS
Développeur informatique
Inscription : juin 2005
Messages : 636
Détails du profil
Informations personnelles :
Nom : Homme Sylvain DOREMUS
Âge : 31
Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2005
Messages : 636
Points : 1 537
Points : 1 537
Envoyer un message via MSN à dragonjoker59
Une traduction littérale, peut-être, alors : "Liste d'initialisateurs", moi je pense que c'est le terme que j'utiliserai, à part le terme anglais.
__________________
Si vous ne trouvez plus rien, cherchez autre chose...

Chef de projet (et unique exécutant pour l'instant) pour Castor 3D
dragonjoker59 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/06/2012, 16h18   #30
jblecanard
Membre Expert
 
Jean-Bernard
Inscription : mars 2007
Messages : 1 001
Détails du profil
Informations personnelles :
Nom : Jean-Bernard
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 1 001
Points : 1 628
Points : 1 628
Un grand merci à gbdivers pour ce travail de documentation. Il me sera fort utile.
jblecanard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2012, 11h59   #31
ptyxs
Membre éclairé
 
Inscription : août 2008
Messages : 301
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2008
Messages : 301
Points : 300
Points : 300
Merci à l'auteur de ce fil passionnant.
Espérons qu'il aura le temps de le compléter
A noter, pour ceux qui en auraient l'utilité, ce tutoriel très bien fait, décrivant pas à pas comment compiler la version la plus récente de GCC sur une Ubuntu (Linux) 12.04

http://solarianprogrammer.com/2012/0...-ubuntu-12-04/
ptyxs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2012, 12h12   #32
gbdivers
Expert Confirmé Sénior

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 318
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 318
Points : 19 564
Points : 19 564
C'est toujours en cours... selon mes dispos
Je vais finaliser ça avant la fin d'année, en excluant la partie move semantic et prog concurrente, qui feront l'objet d'articles spécifiques
__________________
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.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2012, 14h35   #33
gbdivers
Expert Confirmé Sénior

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 318
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 318
Points : 19 564
Points : 19 564
Du coup, je viens transférer ce qui était déjà fait :
* Les nouveaux types de caractères
* Les espaces de noms inline
* Les opérations atomiques (sera dans un article dédié)
* La propagation des exceptions
__________________
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.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2012, 16h17   #34
ptyxs
Membre éclairé
 
Inscription : août 2008
Messages : 301
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2008
Messages : 301
Points : 300
Points : 300
A propos des nouvelles techniques d'initialisation, peut-être serait-il bien de commencer par montrer, dans une présentation pour des novices, à quel point elles fournissent une syntaxe uniforme et générale (comme le dit Stroustrup dans sa FAQ sur le C++11) de l'initialisation, et de mettre pour commencer en avant des séries d'exemples parallèles tels que :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <map>
#include <string>
#include <vector>
#include <list>
 
class A {
    int a;
    std::string b;
public:
    A()=default;
    A(int i, std::string s): a {i}, b {s} { };
};
 
 
 
int main()
{
    int i  {34};
 
    int tab[]  {1,3,5};
 
    std::vector<int>  vec {1,3,5};
 
    std::list<int>  lst {23,679,32};
 
    std::map<int,std::string> mymap  { {1,"Jean"}, {2,"Albert"} };
 
    A objet1 {345,"essai"};
 
    A objet2 {}; //liste de paramètres vide d'où ici constructeur par défaut
 
    int * pData  {  new  int[4]   { i, 2, 97, 103 }  };
 
}
(à noter qu'un '=' entre la variable et la liste d'initialisation est parfois permis parfois exclu : pour mettre en valeur la généralité de la syntaxe, peut-être une règle de bonne programmation serait de l'omettre systématiquement, comme le recommande Scott Meyers dans son dernier pdf sur le C++11 [slide 50]).
ptyxs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2012, 17h05   #35
oodini
Membre Expert
 
Inscription : novembre 2004
Messages : 2 026
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 2 026
Points : 1 426
Points : 1 426
Citation:
Envoyé par ptyxs Voir le message
peut-être serait-il bien de commencer par montrer à quel point elles fournissent une syntaxe uniforme et générale
Ce n'est pas forcément un bien : dans ton exemple, en lisant rapidement, i ne se distingue pas des autres par sa nature scalaire. Cela pourrait tout aussi bien être un tableau d'un élément. Tu vas me dire, il suffit de regarder le type, mais si tu as un typedef...
__________________
VDS "The C++ Standard Library" (Josuttis) -> 30 €
oodini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2012, 18h53   #36
ptyxs
Membre éclairé
 
Inscription : août 2008
Messages : 301
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2008
Messages : 301
Points : 300
Points : 300
J'ai rajouté aussi ça dans la liste :

Code :
    int * pData  { new  int[4]   { i, 2, 97, 103 }   };
ptyxs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2012, 21h19   #37
Arzar
Membre Expert
 
Inscription : mai 2008
Messages : 937
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 937
Points : 1 785
Points : 1 785
A noter aussi que l'initialisation uniforme en {} vient corriger une petite imperfection assez pénible du C++03 : on ne pouvait pas initialiser un tableau membre d'une classe directement dans la liste d'initialisation du constructeur ! Maintenant, on peut :
Code :
1
2
3
4
struct S {
   int a[3];
   S(int x, int y, int z) :a{x,y,z} { /* ... */ }; // solution to old problem
};
Arzar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2012, 18h27   #38
ptyxs
Membre éclairé
 
Inscription : août 2008
Messages : 301
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2008
Messages : 301
Points : 300
Points : 300
En ce qui concerne les listes d'initialisation, à noter aussi leur emploi autorisé dans un return : par exemple, une fonction du genre :

std::vector<int> f(...)

pourra contenir une ligne comme :

ptyxs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2012, 22h08   #39
gbdivers
Expert Confirmé Sénior

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 318
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 318
Points : 19 564
Points : 19 564
L'article (en cours de rédaction) a été mis au format Dvp. Il est donc possible de télécharger le pdf (en autre)

Bonne lecture

Nouvelles fonctionnalités du C++11 prises en charge dans 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.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 02h43   #40
mitkl
Rédacteur
 
Avatar de mitkl
 
Homme Timothée Bernard
Étudiant
Inscription : février 2010
Messages : 370
Détails du profil
Informations personnelles :
Nom : Homme Timothée Bernard
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2010
Messages : 370
Points : 1 325
Points : 1 325
"une classe avec une fonction vituelle mais un destructeur non virutel"
__________________
Si vous ne savez toujours pas ce qu’est la récursivité, relisez cette phrase.

Mon blog sur la programmation et l'informatique !
mitkl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h41.


 
 
 
 
Partenaires

Hébergement Web