Hello.
§ des handles.
Au niveau du diagramme pour choisir son handle, il y a à mon goût à la fois trop et pas assez de détails. Si on commence à parler de std::function, il faudrait alors parler des mutex, des sockets, des fichiers, des threads, etc. Du coup il y a une sorte de déséquilibre. D’un coté je tendrai à ne pas parler de plus de choses que des handles mémoire. De l’autre, s’il faut plus, function n’est pas celui qui me vient en premier. J’aurai mème plutôt tendance à le traiter uniquement au niveau des lambdas.
§ templates avancés
J’ai toujours un peu de mal avec le terme "avancé" car il existe souvent des aspects encore bien plus avancés, ici il y a toute la métaprog template qui part du simple traits, qui se complexifie à peine avec les politiques, avant d’exploser avec le SFINAE et bien d’autres techniques obscures.
premier
Pour la pile, on parle plutot du "sommet". Premier donne l’impression qu’il pourrait y avoir un deuxième, alors que non, on n’est pas du tout sur quelque chose d’itérable.
définition séparée
Cette solution ne nécessite aucune syntaxe supplémentaire mais rend le corps de la classe plus gros et donc moins lisible.
Mouais, je n’achète plus ces arguments. Dans les autres langages cela ne gêne personne (Java, C#, Python…). Sans parler que même avec Vim on peut replier son code, alors bon, l’argument du moins lisible en ignorant la complexité syntaxique des définitions séparées de fonctions membre templates de classes templates… L’impossibilité de renvoyer auto
… A d’autres.
C’est juste qu’en C++, pour des raisons d’homogénéité on veut utiliser la définition séparée partout, et que l’on n’a pas le choix en cas de référence croisée.
m_pile
Cela fait plusieurs fois que je me pose cette question. Est-il normal d’appeler m_toto
un machin utilisé en interne dans une classe Toto
(classe qui modélise le concept toto) alors que le m_toto
est techniquement une toute autre bête? Je vois régulièrement mes apprenants employer m_matrix
(ou autres préfixes), pour désigner un std::vector<double>
dans une classe Matrix
.
Bonne pratique ou pas je n’en sais rien, par contre cela me fait tiquer à chaque fois. Certes, m_elements
(ou pire m_buffer
) ce n’est pas très parlant, mais quand on se balade entre plusieurs niveaux d’appels, cela me permet de voir plus vite à quel niveau je suis sans devoir aller chercher le nom de la classe courante.
Il y a des gens qui ont réfléchi à cette question?
.tpp
Je préciserai juste que c’est un choix de nom d’extension totalement arbitraire. Il n’y a pas de convention universelle reconnue par tout un chacun, IDE compris, sur la question. (et j’ai le droit de le dire, il me semble bien que ce choix de nom d’extension qui a fini dans la FAQ de dvpz, c’est ma faute)
valeur par défaut
Pas "moderne", 17. (indépendamment du fait que je vois la modernité plus comme une philosophie d’utilisation qui rompt avec des traditions hérités d’ailleurs et d’antan sans fondement dans un écosystème C++)
"concepts révolutionnaires"
Euh… La révolution a rejoint le standard en 94: https://www.drdobbs.com/cpp/the-sgi-standard-template-library/184410249 et https://web.archive.org/web/20120117045611/http://www.sgi.com:80/tech/stl/stl_introduction.html
OK, les concepts n’était alors qu’un concept