$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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