Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2004-02-29 19:41:39


Daryle Walker wrote:

> 1. The MS Windows headers define "min" and "max" macros
> 2. But nothing in those headers _actually needs_ those macros

Try this with VC7.1:

#define NOMINMAX
#include <afxtempl.h>

int main()
{
     CArray<int> array;
     array.SetSize(3);
     return 0;
}

f:\Program Files\Microsoft Visual Studio .NET
2003\Vc7\atlmfc\include\afxtempl.h(398): error C3861: 'max': identifier
not found, even with argument-dependent lookup

Regretably, there *is* code out there that require the min/max macros,
even platform headers.

> So why can't we add:
>
> #if defined(min) || defined(max)
> #error Define NOMINMAX and use the alternates in <algorithm>
> #endif
>

Because this will break people's code in a way they can't easily fix.
Nor should they have to.

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