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