cast to bool not done

Loring Holden lsh@lsh.cs.brown.edu
Sun Sep 12 00:36:00 GMT 1999


It seems that a cast to bool is not being done automatically by the compiler
(g++ compiled from CVS sources as of 3 pm EDT, Sun, Sep 12).

Error:
/home/lsh/src/bugs/refptr_bool.C: In function `void test()':
/home/lsh/src/bugs/refptr_bool.C:20: `class REFptr<CamFocus>' used where a
`bool' was expected

Source:
template <class T>
class REFptr {
   public:
      operator T* () const;
};

class CamFocus;
typedef REFptr<CamFocus> CamFocusptr;

class CamFocus {
   protected:
      static CamFocusptr  _focus;
   public :
      static CamFocusptr &cur() { return _focus; }
};

void
test()  
{
   if (CamFocus::cur()) {
   }
}

Output from: g++ -v -g -o /tmp/test /home/lsh/src/bugs/refptr_bool.C
Reading specs from /u/lsh/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/specs
gcc version 2.96 19990911 (experimental)
 /u/lsh/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=96 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -g -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -D__tune_pentiumpro__ /home/lsh/src/bugs/refptr_bool.C /tmp/cct3FOXZ.ii
GNU CPP version 2.96 19990911 (experimental) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /u/lsh/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/../../../../include/g++-3
 /u/lsh/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/../../../../i686-pc-linux-gnu/include
 /u/lsh/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
 /usr/local/include
End of omitted list.
 /u/lsh/egcs/lib/gcc-lib/i686-pc-linux-gnu/2.96/cc1plus /tmp/cct3FOXZ.ii -quiet -dumpbase refptr_bool.cc -g -version -o /tmp/cccikbRR.s
GNU C++ version 2.96 19990911 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.96 19990911 (experimental).
/home/lsh/src/bugs/refptr_bool.C: In function `void test()':
/home/lsh/src/bugs/refptr_bool.C:20: `class REFptr<CamFocus>' used where a `bool' was expected


More information about the Gcc-bugs mailing list