|
Boost : |
From: Eric Niebler (eric_at_[hidden])
Date: 2004-02-28 17:26:15
This concerns all boost developers. Please read!
I have just added documentation for how to deal with min/max in boost
code. I have added it to the "Boost Library Requirements and Guidelines"
document (boost/more/lib_guide.htm). That seemed the appropriate place,
but it might be hard to find. If anyone thinks this belongs in a more
prominent place, please suggest one.
For reference, here is the text I have added:
---- Make sure your code compiles in the presence of the min() and max() macros. Some platform headers define min() and max() macros which cause some common C++ constructs to fail to compile. Some simple tricks can protect your code from inappropriate macro substitution: * If you want to call std::min() or std::max(): o Use (std::min)(a,b) if you do not require argument-dependent look-up. o Use boost::std_min(a,b) if you do require argument-dependent look-up. boost::std_min() delegates to std::min(). * If you want to call std::numeric_limits<int>::max(), use (std::numeric_limits<int>::max)() instead. * If you want to call a min() or max() member function, instead to doing obj.min(), use (obj.min)(). * If you want to declare or define a function or a member function named min or max, then you must use the BOOST_PREVENT_MACRO_SUBSTITUTION macro. Instead of writing int min() { return 0; } you should write int min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; } This is true regardless if the function is a free (namespace scope) function, a member function or a static member function, and it applies for the function declaration as well as the function definition. -- Eric Niebler Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk