Below is a stand-alone minimal test that still produces the same error message with MIPSpro:
% CC -LANG:std zminmin.cpp cc-1108 CC: ERROR File = zminmin.cpp, Line = 13 The indicated expression must have pointer-to-function type. static const unsigned long value = sizeof(bdhelper_t::check()); ^ 1 error detected in the compilation of "zminmin.cpp". The same code works correctly with gcc 2.96 and an EDG245-based compiler (Compaq cxx). However, here is an interesting observation: % cxx -std strict_ansi zminmin.cpp % a.out 4 No problem with "strict_ansi." But: % cxx -std ansi -D__USE_STD_IOSTREAM zminmin.cpp cxx: Error: zminmin.cpp, line 13: operand of sizeof may not be a function static const unsigned long value = sizeof(bdhelper_t::check()); ----------------------------------------------^ cxx: Info: 1 error detected in the compilation of "zminmin.cpp". I am jumping to the conclusion that older EDG's don't support sizeof(some_function()). Does that sound plausible? What could be done to make the is_base_and_derived test work with MIPSpro? Is the test actually used in Boost.Python? -- I noticed that MIPSpro chokes even if is_base_and_derived_impl2 is not instantiated. Thanks! Ralf #include <iostream> template <typename B, typename D> struct bd_helper { static int check(); }; template<typename B, typename D> struct is_base_and_derived_impl2 { typedef bd_helper<B,D> bdhelper_t; static const unsigned long value = sizeof(bdhelper_t::check()); }; int main() { unsigned long n = is_base_and_derived_impl2<int, float>::value; std::cout << n << std::endl; } __________________________________________________ Do you Yahoo!? Yahoo! Tax Center - forms, calculators, tips, more http://taxes.yahoo.com/ _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost