I've been using #include <minmax.h>
in my scripts and using min()
and max()
as expected. I showed this to someone and they had never seen it before, said it wasn't working for them and asked me why I wasn't including <algorithm>
and calling std::min()
or std::max()
.
So my question is basically, why aren't I? I found this in a book on C++: "C++ Design Patterns and Derivatives Pricing". Googling "minmax.h"
, I find a reference to that very book in the top result, so that even more so makes me think it's something abnormal.
Is anyone able to tell me what this is?
The C++ programming language is accompanied by the C++ Standard Library. There is no <minmax.h>
header in the C++ Standard Library. No header in the standard-library has the .h extension. Furthermore, the header is not part of the ported C standard library either, as those headers have the c prefix, like <cmath>
(which replaces the C standard-library <math.h>
header), <ctime>
(which replaces the <time.h>
header) when used from the C++ Standard Library.
The std::min and std::max functions are declared inside the <algorithm>
header.
That being said, there indeed appears to be some MS header called <minmax.h>
inside the C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt
folder which defines min
and max
macros, not functions. But, that is some implementation specific header, and you should be using the standard <algorithm>
header instead.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With