Lisp-style C++ template meta programming
Le LMP introduit une évaluation paresseuse dans la méta‑programmation C++ en utilisant des thunks pour différer l’évaluation. Des abstractions comme let_lazy et force permettent d’implémenter des branches conditionnelles et des constructions logiques sans SFINAE excessif. Les méta‑fonctions s’appuient sur des macros telles que meta_fn et meta_return pour normaliser le calcul et renvoyer les résultats via lmp::force. La théorie des données suit une convention ::type, où les objets de données comme nil et cons exposent leurs champs car et cdr de manière uniforme. Un exemple pratique illustre un crible d'Ératosthène basé sur des listes infinies et un filtrage paresseux, démontrant l’intégration de la méthode Lisp avec la TMP C++