• [^] # Re: Boost ? c'est quoi ?

    Posté par . En réponse à la dépêche Sortie de Boost 1.46. Évalué à 0.

    Comme le dit lupus_mic tu n'as pas compris ou se générait l'exception. Tu as oublié un point dans tes étapes, donc voici le déroulement complet de l'exécution :

    1. copie de T pour pouvoir le retourner
    2. suppression de T de la queue
    3. copie de T au return <------ génération de l'exception

    L'étape 3 peut être optimisé par le compilateur qui évitera de faire une copie dans certains cas par exemple en cas d'inlining, mais ce n'est pas garanti. Ne jamais oublier qu'une copie au retour de paramètre peut soulever des exceptions.
    Savoir si une fonction est exception safe est important quand tu programme un truc qui doit être fiable (tourner sans planter plusieurs années sans être relancé).
    Je ne saurais trop te conseiller la lecture de cet article sur la réalisation des interfaces exceptions safe.
    De plus, sache qu'effectivement,les implémentation C#, Java ne sont pas exception safe. Ce qui pose un gros problème de robustesse. Cependant, pour faire du code robuste, on ne fait pas de c# ou du Java, c'est une question de bon sens, vu qu'il y a des bugs dans les implémentation des VM et des compilateurs JIT!