Quote Originally Posted by sudar View Post
Also, do all objects carry a "value"?
In the case of streams that works via a conversion operator.
something like this
Code:
#include <iostream>
using namespace std;

class xstream {
public:
    xstream() : flag(0) { }
    void set_error() { flag = 1; }
    operator const void *() { return flag ? 0 : this; } 
private:
    int flag;
};

int main() {
   xstream m;
   if ( m )
        cout << "ok." << endl;
   else
        cout << "error." << endl;

   m.set_error();  // simulate error
   
   if ( m )
        cout << "ok." << endl;
   else
        cout << "error." << endl;
}
Kurt