I have a function declared bool that is acting rather non-bool. std::cout << obj.fn() gives me "76" and BOOST_CHECK_EQUAL(obj.fn), true) fails, with the message /home/ross/peter/R/mspath/src/test/Covariates_test.cc(178): error in "obs_covariates": test env.matchesObservation() == true failed [76 != 1] std::cout << true prints "1". obj.fn() works OK as an argument to if (obj.fn()). I am using g++ 1:3.3.5-5 on Debian GNU/Linux. I've tried -O2 and -O1; same behavior either way. boost is 1.31.0-9 The function is declared bool matchesObservation() const Maybe bool is being typedef'd or #define'd to int somewhere, for compatibility with old code? Probably not; I tried printing typeid(xxx).name() and got "b" for true and the function return value, while I got "i" for the number 1. I tried tracing into the code with limited success. Some mix of the fact that the underlying libraries weren't a debug version, that the code was optimized, and that there are #line directives (the source files were generated out of another file) made it hard to follow. Any suggestions? -- Ross Boylan wk: (415) 502-4031 530 Parnassus Avenue (Library) rm 115-4 ross@biostat.ucsf.edu Dept of Epidemiology and Biostatistics fax: (415) 476-9856 University of California, San Francisco San Francisco, CA 94143-0840 hm: (415) 550-1062