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

Boost C++ Discussion :

Factoriser un code, du domaine de boost::Preprocessor ?


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut Factoriser un code, du domaine de boost::Preprocessor ?
    Bonjour à tous.

    J'ai le code d'une bibliothèque dont le code (qui en lui même n'est pas très dur) est extrèmement long car chaque module dispose de 6 surcharges pour gérer les fonctions possédant jusqu'a 6 paramètres.

    Exemple:
    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
     
    // For nullary through sestiary(6-ary) function objects
    template<typename Ret> inline
    Ile<Call_0<Ret(*)(void)> > call(Ret(* f)(void)) {
    	return Call_0<Ret(*)(void)>(f);
    }
     
    template<typename Ret, typename A1, typename P1> inline
    Ile<Call_1<Ret(*)(P1),A1> > call(Ret(* f)(P1), const A1& a1) {
    	return Call_1<Ret(*)(P1),A1>(f,a1);
    }
     
    template<typename Ret, typename P1, typename P2, typename A1, typename A2> inline
    Ile<Call_2<Ret(*)(P1,P2),A1,A2> > call(Ret(* f)(P1,P2), const A1& a1, const A2& a2) {
    	return Call_2<Ret(*)(P1,P2),A1,A2>(f,a1,a2);
    }
    Et ca va comme ca jusqu'a P6/A6
    Je me demandais si on ne pouvait pas factoriser le code à l'aide de boost::preprocessor.

    Etant donné que je n'ai jamais travaillé avec cette bibliothèque , est ce que c'est du domaine du faisable ?
    Si la réponse est négative, y'a t'il un moyen de le faire avec quelque chose d'autre ?

    Merci.
    David Côme.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  2. #2
    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
    C'est typiquement le genre de choses pour lesquelles boost.pp a été conçu. Une alternative plus performante si tu bosses avec gcc est d'utiliser les variadic templates de c++0x.
    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.

Discussions similaires

  1. factorisation de code
    Par calagan99 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 21/05/2007, 09h00
  2. [C++] Factorisation de code
    Par xterminhate dans le forum C++
    Réponses: 6
    Dernier message: 07/11/2006, 16h21
  3. factoriser du code
    Par grabriel dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2006, 15h00
  4. Réponses: 7
    Dernier message: 01/08/2006, 11h58
  5. Réponses: 4
    Dernier message: 06/11/2003, 10h37

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