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

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.
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.


Eric Niebler
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at