You saw that a language is strongly typed
if an object can only be used according to its definition.
By that definition, C++ is mostly strongly statically typed.
However, to deal with hardware,
sometimes you have to weaken
the type checking because a lot of hardware is just a bag of bits.
You want to allocate memory,
it's just memory till you save what type it is.
In this in-between time where you grab some memory say from
the operating system or straight from the hardware until you make it of a given type.
Well, it's a bag of bits and we wouldn't call that strongly typed.
Similarly, there are ways of suppressing the type checking in C++.
For instance, you have an integer and you want to make
it into a pointer to a device register.