La première fois si j'ai bon souvenir que j'ai vu operator,() c'est dans boost::assign.
Regarde le code de sequence(), il est tantôt "in" tantôt "out", en fonction du paramètre template.
J'aimais pas faire le choix entre << ou >>.
Et puis, c'est perso, je desteste les (io)stream.
Avouons-le, le code C++ est quand même souvent rébarbatif à lire quand il déborde de < et >, autant ne pas se priver quand on peut les éviter (c'est pour la bonne cause).
C'est dur à lire, car c'est un opérateur "jamais" surchargé, il est ici préférable d'utiliser des templates variadics je pense.
Ça serait plus lisible imo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template<typename F> void sequence(F & f) { f, m_age, m_nom, m_prenom; } // deviendrait, avec process une fonction template variadique. template<typename F> void sequence(F & f) { f.process(m_age, m_nom, m_prenom); }
Edit : l'utilisation de l'opérateur,() n'est pas très safe non plus :Ce code compile bien que Foo ne fournisse pas de surcharge de l'opérateur,() et n'aura donc pas le comportement voulu.
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
19
20
21
22 #include <string> struct Foo { // pas de surchage de l'operator,() }; struct Bar { int m_age; std::string m_nom, m_prenom; template <class F> void sequence(F& f) { f, m_age, m_nom, m_prenom; } }; int main() { Foo foo; Bar bar; bar.sequence(foo); return 0; }
Je plussoie, surcharger l'opérateur virgule est un appel au désastre et au code non-maintenable...
Pour de la sérialisation, je préfère surcharger les opérateurs de décalage. On s'y attend plus.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
La vod est maintenant dispo en ligne : http://channel9.msdn.com/Events/Goin...in-Cpp-Quickly
Le passage commence à 46m30. Il rentre réellement dans le vif du sujet à 48m30.
Je ne suis pas arrivé à cette vidéo, mais Bjarne parle du même sujet dans son introduction http://channel9.msdn.com/Events/Goin...rne-Stroustrup (vers 30m) , et préconise d'utiliser des valeurs de retour pour retourner.
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.
C'est encore bien la preuve que tout le monde voit midi à sa porte
Je crois, sincèrement, qu'il y a du "pour" et du "contre" aux deux techniques et qu'il faut essentiellement s'adapter aux circonstances.
Le passage par référence sera très certainement intéressant dans certains cas, alors que l'utilisation d'une valeur de retour le sera dans d'autres...
Tant que l'on parle de manière théorique, il sera donc tout à fait impossible de se départager, et ce qui sera -- effectivement -- la meilleure solution dans une situation donnée sera -- très certainement -- la plus mauvaise dans une autre
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Apparemment, les Dalton ne sont pas d'accord sur plusieurs choses.
Exemple : Stroustrup dénonce la vision multiparadigme, alors que ça doit être un des premiers items dans le bouquin de Meyers.
En fait, je crois que Stroutrup se base sur la définition d'un paradigme, telle qu'on peut par exemple la trouver sur wikipedia:
J'ai l'impression qu'il se dit que si on applique trop à la lettre cette définition, on risque de se retrouver sur ... des rails, qui nous empêcheraient d'envisager d'autres solutions.Envoyé par wikipedia
Il faut avouer que, la première idée qui vient à l'esprit de beaucoup de développeurs C++ est le paradigme OO, alors que le procédural pur et simple ou le générique pourrait parfaitement s'appliquer
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager