Implementing Tribool with int8_t
I would definitely recommend using enumerations. As this is December 2011, I would imagine your compiler supports an explicit underlying type on enumerations (GCC supported this since 4.4 and Visual C++ now supports it in 11.0). As a side note, &lt;cstdint&gt; is supported by visual c++ now (as of 10.0).

As an addenum to traditional c-style enumerations:

enum state : std::int8_t {
    S_UNKNWON,
    S_HIGH,
    S_LOW
};


Or adding scope to the enumeration's memebers (avoid polluting global scope):

enum class state : std::int8_t {
    unknown,
    high,
    low
};

state status = state::unknown;


Of course, after looking at boost::tribool, I would recommend that over anything -- unless you really need to ensure that state is exactly 1 byte.