|
Boost : |
From: Eric Niebler (eric_at_[hidden])
Date: 2004-06-22 23:59:03
I have ripped out the std_min/std_max functions. They were a
less-than-perfect solution to the problems caused by the min/max macros
defined by some platform headers. I have fixed all the places in the
Boost affected by this change, and I have also updated the coding
guidelines.
For your references, the guidelines are reproduced here:
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():
If you do not require argument-dependent look-up, use (std::min)(a,b).
If you do require argument-dependent look-up, you should:
#include <boost/minmax.hpp>
Use BOOST_USING_STD_MIN(); to bring std::min() into the current scope.
Use min BOOST_PREVENT_MACRO_SUBSTITUTION (a,b); to make an
argument-dependent call to min(a,b).
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.
Thanks.
-- 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