Listing 1: Version 11 of boolean


#include <iostream.h>

class boolean
    {
    friend ostream &operator<<
        (ostream &, boolean const &);
public:
    boolean(int = 0);
private:
    boolean(char);
    boolean(signed char);
    boolean(unsigned char);
    boolean(short);
    boolean(unsigned short);
    boolean(unsigned int);
    boolean(long);
    boolean(unsigned long);
    boolean(float);
    boolean(double);
    boolean(long double);
    char value_;
    };

inline boolean::boolean(int value) :
        value_(value ? (char) 1 : 0)
    {
    }

inline ostream &operator<<
        (ostream &left, boolean const &right)
    {
    return left << (right.value_ ? "TRUE" : "FALSE");
    }

boolean const FALSE(0);
boolean const TRUE(1);