Je trouve que dans beaucoup d'endroits, il y a plein de choses qui sont en doublon par rapport à la bibliothèque standard ou qui sont réimplémentées un peu différemment et du coup, on perd de l'intérêt ou des fonctionnalités.
Dans le module meta, je prend l'exemple de remove_const_reference qui aurait pu être implémenté plus simplement:
Et en plus, vous aviez la gestion des rvalue references (celles avec un &&) alors que l'implémentation proposée n'enlève pas la référence dans ce cas.
Il y a aussi indices et make_indices dont on voit mal la différence avec std::integer_sequence et std::make_integer_sequence.
Et dans le module memory, c'est un peu pareil. make_unique est réimplémenté mais sans prendre en compte les tableaux. Et donc, si je fais iscool::memory::make_unique<int[]>(4), ça ne compile même pas (alors que la version dans la bibliothèque standard compile et fait bien ce qu'on attend d'elle).
Et dans le module random, random_generator fait quasiment la même chose que std::discrete_distribution sauf qu'en plus, ça ne peut pas prendre n'importe quelle source de hasard (alors que la bibliothèque standard est plutôt bien conçue à ce niveau).
Je pourrais continuer mais je vais m'arrêter là. Tout ça me laisse une impression plus que mitigée à la lecture du code. Ça laisse penser que le syndrôme NIH n'est pas loin et donc, qu'il n'y a que peu d'intérêt à utiliser cette bibliothèque.
# NIH ?
Posté par rewind (Mastodon) . En réponse au journal Publication de bibliothèques c++ sous licence libre. Évalué à 5.
Je trouve que dans beaucoup d'endroits, il y a plein de choses qui sont en doublon par rapport à la bibliothèque standard ou qui sont réimplémentées un peu différemment et du coup, on perd de l'intérêt ou des fonctionnalités.
Dans le module
meta, je prend l'exemple de remove_const_reference qui aurait pu être implémenté plus simplement:Et en plus, vous aviez la gestion des rvalue references (celles avec un &&) alors que l'implémentation proposée n'enlève pas la référence dans ce cas.
Il y a aussi
indicesetmake_indicesdont on voit mal la différence avecstd::integer_sequenceetstd::make_integer_sequence.Et dans le module
memory, c'est un peu pareil.make_uniqueest réimplémenté mais sans prendre en compte les tableaux. Et donc, si je faisiscool::memory::make_unique<int[]>(4), ça ne compile même pas (alors que la version dans la bibliothèque standard compile et fait bien ce qu'on attend d'elle).Et dans le module
random,random_generatorfait quasiment la même chose questd::discrete_distributionsauf qu'en plus, ça ne peut pas prendre n'importe quelle source de hasard (alors que la bibliothèque standard est plutôt bien conçue à ce niveau).Je pourrais continuer mais je vais m'arrêter là. Tout ça me laisse une impression plus que mitigée à la lecture du code. Ça laisse penser que le syndrôme NIH n'est pas loin et donc, qu'il n'y a que peu d'intérêt à utiliser cette bibliothèque.