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

C++ Discussion :

std::make_array pour c++14 ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par d�faut std::make_array pour c++14 ?
    Bonjour � tous!

    Quelqu'un sait-il s'il existe une proposition pour std::make_array pour le futur standard c++? En effet il existe d�j� make_tuple par exemple qui permet de d�duire automatiquement le nombre d'argument, ce qui se r�v�le particuli�rement int�ressant!

    Le site http://www.meetingcpp.com/index.php/start.html qui recense pas mal de paper ne mentionne rien � ce sujet l�!

    Merci beaucoup � tous!

  2. #2
    Membre chevronn�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Sant�

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par d�faut
    Bonjour,

    On peut d�j� faire �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    std::array<float, 5> a1 = {{0.1, 0.2, 0.3, 0.4, 0.5}}; // possible en C++11
    std::array<float, 5> a2 = {0.1, 0.2, 0.3, 0.4, 0.5}; // suggéré pour la prochaine norme
    Tu voudrais pouvoir �crire quelque chose comme �a ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    auto a1 = std::make_array({0.1, 0.2, 0.3, 0.4, 0.5});
    // ... ou: 
    auto a2 = std::make_array(0.1, 0.2, 0.3, 0.4, 0.5);

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par d�faut
    Exactement! Je souhaiterais faire cela en fait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    auto my_array = std::make_array(
        1,
        2,
     
    #if defined (MY_DEFINE)
        3,
    #endif
     
        4);
     
        for(auto const i& : my_array)
            // some code ...
    Sachant que le code qui suit la d�claration et l'initialisation de my_array ne d�pend en aucun cas du nombre d'�l�ments! Il reste donc valide!

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Salut,

    Cette syntaxe ne fonctionnerait pas ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    auto my_array = {{
        1,
        2,
     
    #if defined (MY_DEFINE)
        3,
    #endif
     
        4}};
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <array>
     
    int main()
    {
        auto my_array = {{
            1,
            2,
     
        #if defined (MY_DEFINE)
            3,
        #endif
     
            4}};
     
        for(auto &i : my_array)
        {
        }
    }
    Erreur de la part du compilateur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    g++ -o main.o -c main.cpp -W -Werror -Wall -Wfatal-errors -pedantic -pedantic-errors  -std=c++11
    main.cpp: In function ‘int main()’:
    main.cpp:13:11: error: unable to deduce ‘std::initializer_list<_Tp>’ from ‘{{1, 2, 4}}4}};
               ^
    compilation terminated due to -Wfatal-errors.
    make: *** [main.o] Error 1
    P.S. La sortie bizarre c'est gcc 4.8

  6. #6
    Membre chevronn�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Sant�

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par d�faut
    Voil� une impl�mentation qui fonctionne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    template<typename T, typename ... Args>
    auto make_array(T t, Args ... args) -> std::array<T, sizeof...(Args)+1> {
        return std::array<T, sizeof...(Args)+1>({{t, args...}});
    }
    Il ne te reste plus qu'� �crire la proposition

Discussions similaires

  1. Utilisation de std::function pour cr�er un bouton
    Par Invit� dans le forum SL & STL
    R�ponses: 19
    Dernier message: 28/09/2014, 17h12
  2. std::allocator pour char et wchar_t
    Par Meseira dans le forum SL & STL
    R�ponses: 6
    Dernier message: 24/04/2013, 14h20
  3. Probl�me avec std::stringstream pour lire un fichier OBJ
    Par Kromagg dans le forum D�veloppement 2D, 3D et Jeux
    R�ponses: 3
    Dernier message: 01/12/2010, 18h49
  4. pr�dicat pour min_element d'une std::map
    Par Kurisu dans le forum SL & STL
    R�ponses: 6
    Dernier message: 11/09/2006, 19h27
  5. R�ponses: 22
    Dernier message: 26/08/2005, 12h46

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