Interconverting std::function with copyable_function
L'article décrit les limites de std::function apparu en C++11 et l'introduction en C++26 de std::copyable_function pour corriger certains défauts de conception. Il explique que copyable_function et std::function sont interconvertibles et que, sans prise en charge spéciale, les conversions peuvent empiler des wrappers et former une "liste liée" de callables. Un micro-benchmark sur libstdc++ montre que ce comportement induit une dégradation progressive des temps d'appel et une augmentation de l'utilisation mémoire lorsque les deux types sont mélangés. L'auteur signale que Microsoft STL gère mieux l'interopérabilité, que libc++ n'a pas encore ces types, et rappelle la recommandation d'implémenteurs d'éviter des allocations supplémentaires lors de conversions compatibles. La recommandation pratique est de ne pas mélanger std::function et copyable_function dans un code existant, d'écrire des tests unitaires pour les types effacés et, si possible, d'utiliser dans du code neuf copyable_function ou une implémentation personnalisée de callable effacé.