static, которое разрешает только внутреннее связывание (internal linkage) объекта в рамках текущего модуля трансляции. Глобальные объекты имеют внешнее связывание (external linkage) и могут быть использованы в других модулях трансляции. Возможность связывания - это именно то, что отличает глобальные объекты от динамической памяти. Для динамической памяти связывание недоступно.это уже вкусовщина пошла
typedef struct является признаком человека не до конца перешедшего с C на C++.
std::out_of_rangeговорит о том, что код попытался обратиться за пределы стандартного контейнера. Исключение было сгенерировано на той строчке, на которой ошибка и присутствует.Тебе стоит просто отладить свой код.