Вы идете поперек идеологии С++, предполагающей, что скомпилированный код будет делать только то, что реально нужно алгоритму. Для того же, чтобы делать еще кучу всякого на тот случай, когда надо будет показать горе-программисту, где он облажался - есть многие и многие другие языки.
Право, если бы был простой и естественный способ сделать такую отладочную информацию - неужели вы думаете, что разработчики STL не использовали бы такую возможность?
С другой стороны, исключение вызывается методом контейнера и в него передается строка. Можно же добавить в эту строку некоторые данные самого контейнера, которые могут быть полезны при исследовании ошибки - его реальную длину, тип, ошибочный индекс....