Bonjour,
Dans différente bibliothèque Boost, je trouve la définition suivante (ou quelque chose d'équivalent) pour un opérateur évaluant en bool:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ClasseBoost
{
protected/private:
   typedef void (ClasseBoost::*safe_bool)();
   void dummy();
 
public:
   operator safe_bool() const {
      if(vrai){
         return &ClasseBoost::dummy;
      }
      else{
         return 0;
      }
   }
};
Pourquoi passer par ce genre de type interne en lieu et place d'une surcharge de l'opérateur bool:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class ClasseBoost
{
public:
   operator bool() const { ...}
}