I was running some tests on the max_of, min_of etc. templates I've proposed some days ago and, *as expected*, VC++ gave problems with integral conversions of enumerators. As I think you all know, if you have something like
enum e { e1 = 1u << 31 }; then it simply "promotes" e1 to int instead of unsigned int. For instance this enum e { e1 = 2147483648u }; #include <iostream> int main() { std::cout << e1 << '\n'; } outputs -2147483648. Applied to my code, where I have e.g. template<> struct max_of<unsigned int> { BOOST_STATIC_CONSTANT( promoted_of<unsigned int>::type, value = UINT_MAX ); }; this means that max_of<unsigned int>::value, and of course max_of<unsigned long>::value, will simply be converted to -1. Before inventing my own solution, has boost already a workaround or a convention for this problem? Thanks, Genny. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost