SIGN IN SIGN UP

Keep iterator debugging off on MSVC 17.14 and newer

The _MSC_VER >= 1944 branch was added to avoid _CONTAINER_DEBUG_LEVEL,
which that toolset removed outright (yvals.h now static_asserts on it),
but it also stopped setting _ITERATOR_DEBUG_LEVEL, which is unrelated
and still supported. _MSVC_STL_HARDENING is not a replacement for it.

Release was unaffected because NDEBUG already implies level 0, but
Debug picked up level 2 and the bounds assert in std::array::operator[]
pulled in _CrtDbgReport -- a user-mode debug CRT symbol that cannot be
resolved under /NODEFAULTLIB:

  natives_impl_windows.cpp.obj : error LNK2019: unresolved external
  symbol _CrtDbgReport referenced in function
  std::array<unsigned __int64,4>::operator[]

The CMake files carry $<CONFIG:Debug> genexes throughout, so Debug is a
supported configuration. Hoist only _ITERATOR_DEBUG_LEVEL out of the
version check and leave _CONTAINER_DEBUG_LEVEL guarded. Debug and
Release both link again.
N
namazso committed
1f72c661c2426c352cbb6d12fcca14744324be85
Parent: c0b72c1