My guess is that max
has been made a macro. This happens at some point inside windows.h
.
Define NOMINMAX
prior to including to stop windows.h
from doing that.
EDIT:
I’m still confident this is your problem. (Not including <limits>
would result in a different error). Place #undef max
and #undef min
just before the function and try again. If that fixes it, I was correct, and your NOMINMAX
isn’t being defined properly. (Add it as a project setting.)
You can also prevent macro expansion by: (std::numeric_limits<T>::max)()
.
On a side note, why not do std::numeric_limits<T>::min()
instead of negating the max?