IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

C++11 : Utilisation du mot clé auto


Sujet :

Langage C++

  1. #21
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Citation Envoyé par Kaamui Voir le message
    |...]

    d'accord, merci...en lisant la norme je suis tombé sur des utilisations de decltype comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char g();
    Template<class T>auto f(T t)->decltype(t +g())
    et je me demande ce quel type peux renvoyer decltype avec t=MaClasse ?

    [...]

    Oui j'avais compris. Ma référence à k était ambigüe. Je voulais vraiment parler d'une ressource partagée par deux portions de code et qui aurait été utilisée pour deux types de données différents.

    [...]
    Avec t = MaClasse, decltype(t + g()) va soit générer une erreur, soit être le type de retour de operator+(MaClasse t, char g).

    Pour la ressource partagée comment penses-tu qu'il soit possible de définir une ressource de plusieurs types différents ?

  2. #22
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Citation Envoyé par Ekleog Voir le message
    Avec t = MaClasse, decltype(t + g()) va soit générer une erreur, soit être le type de retour de operator+(MaClasse t, char g).

    Pour la ressource partagée comment penses-tu qu'il soit possible de définir une ressource de plusieurs types différents ?
    je me pose juste des questions (je sais bien qu'à la compilation le problème sera soulevé, mais on sait jamais alors j'en parle). Justement avec le fait que la ressource partagée (on va dire k)(définie avec le mot-clé auto) soit utilisée dans deux threads de façon différente (l'une du genre k = 5;, l'autre 5.f). Comment le compilateur résoud-il ce cas ?

  3. #23
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    auto ne sert que pour déclarer une variable.

    Et soit tu la déclares dans chaque thread, et donc tes deux 'k' sont des variables distinctes qui n'ont aucun rapport entre elles. Pareil à avoir int i; et double i;

    Soit tu déclares puis tu la partages entre deux threads, mais dans ce cas là, le type est fixé au moment de la déclaration.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #24
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 717
    Par défaut
    Citation Envoyé par Kaamui Voir le message
    d'accord, merci...en lisant la norme je suis tombé sur des utilisations de decltype comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char g();
    template<class T> auto f(T t)->decltype(t +g())

    et je me demande ce quel type peux renvoyer decltype avec t=MaClasse ?
    Ca dépends de ce que retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    operator+( const MaClasse&, char )
    ...

    Le principe même du template c'est de déterminer le code généré selon les paramètres du template et le contexte.



    Oui j'avais compris. Ma référence à k était ambigüe. Je voulais vraiment parler d'une ressource partagée par deux portions de code et qui aurait été utilisée pour deux types de données différents.
    Je n'ai pas compris.

    Est-ce que tu peux donner un exemple?


    merci pour tes précisions
    On est là pour ça.

  5. #25
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    D'accord. Pour l'exemple que j'ai en tête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    auto variable_globale k;// ...
    ...

    Ok bah c'est bon j'ai rien dit . J'me souviens avoir lu dans le draft 2012 qu'à l'utilisation du mot-clé auto on est obligé de préciser immédiatement (comme pour les références) une valeur d'initialisation...

    mais sinon pour l'exemple ça ressemblait au deuxième cas donné par Loïc Joly sauf que j'avais omis cette obligation (logique) de fixer le type au moment de la déclaration.

    Merci Kleim et merci JolyLoic pour votre aide (merci à tous ceux qui ont participé en fait)


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Utilisation abusive mot clé final
    Par jnmlme dans le forum Langage
    Réponses: 9
    Dernier message: 10/10/2006, 08h53
  2. Réponses: 2
    Dernier message: 27/09/2006, 10h37
  3. Question sur l'utilisation du mot réservé static
    Par flash2590 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 00h20
  4. Variables automatiques et mot clé auto, variables register.
    Par Évariste Galois dans le forum C++
    Réponses: 6
    Dernier message: 11/08/2005, 20h30
  5. [Débutant] Utilisation du mot clé ASSERT
    Par analysiz dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/07/2004, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo