non, si c'est gcc, ça doit fonctionner sans problème.
Mais ce que j'ai uploader est une première version. Je vais faire quelques petites modifications dans les prochains jours.
D'une par je veux rajouter des "handler" pour gérer des exceptions (ça c'est déjà fait) qui sont appelé automatiquement, et d'autre part je ne désespère pas de réussir à gérer un bloc finally qui soit optionnel (et si je peut rendre le bloc with optionnel aussi je serais content).
Et ça répond à ta question. Si j'arrive à implémenter des blocs finally, ça permet de détruire comme il faut les pointeur en question.
En C++ les pointeurs sont perdu aussi si tu ne fait pas attention. Il n'y a pas cette construction finally (qu'on trouve dans le java par exemple) mais par contre les variable alloué statiquement sont proprement désallouée automatiquement. Si tu veux détruire une variable alloué avec new, tu peut écrire une classe comme ça :
template<class T> class destructor{
public:
destructor(T* t) { p = t; }
~destructor() {delete p;}
private:
T* p;
};
Et à chaque fois que tu fais un new, tu peut initialiser un destructor avec ce pointeur, comme ça si il y a une exception qui se produit, le pointeur est désalloué. Bien sûr il faut un mécanisme pour détruire le destructor mais pas son pointeur, etc.
Il y a d'ailleurs des auto_ptr en C++ (et boost implémente des truc plus perfectionné) qui ont aussi ce genre de rôle, mais je ne connais pas trop.
Donc ça peut être fait en C++, et je vais essayer de faire en sorte que ça puisse être fait aussi avec ma bibliothèque.
P.S. sur un tout petit benchmark (trop superficiel pour être valable), j'ai l'impression que mes exceptions sont beaucoup (genre 20 fois) plus rapide que celles du C++. Mais bien sûr, il n'y a pas toute la couche objet à gérer.