Boost logo

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