
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