To look up an item in a `std::deque` we do
d69335bac9/lldb/source/Plugins/Language/CPlusPlus/MsvcStlDeque.cpp (L71-L73)
This will crash on if `m_block_size` or `m_map_size` is zero. We didn't
check that these aren't zero. With this PR, we do.
When running the MSVC STL smoke test, `m_map_size` was randomly zero
(the test breaks before the variables are initialized) and the test
failed, because LLDB crashed.
Similar to the other PRs, this looks up the type from a member variable.
Here, we can use the type of `_Mapptr`. On its own, that's enough to
pass the test with clang-cl.
This PR adds synthetic children for std::deque from MSVC's STL.
Similar to libstdc++ and libc++, the elements are in a `T**`, so we need
to "subscript" twice. The [NatVis for
deque](313964b78a/stl/debugger/STL.natvis (L1103-L1112))
uses `_EEN_DS` which contains the block size. We can't access this, but
we can access the [constexpr
`_Block_size`](313964b78a/stl/inc/deque (L641)).
Towards #24834.