Трюк по отладке std::vector[]

Коллега на одной из старых работ (Fitting Reality) по имени Володя Коломеец как-то столкнулся с такой проблемой по отладке приложения:

При использовании std::vector::operator[] выходил за пределы массива.

Ему хотелось бы поймать программный exception, чтобы сделать необходимые действия и выслать отчёт о падении по почте и т.д.

Понашаманил такой код и мне кажется, что он может быть полезен всем:

// file my_vec.h#ifndef MY_VEC_H_#define MY_VEC_H_//-----------------------------------------------------------------//#include <vector>//-----------------------------------------------------------------//#ifdef USE_MY_VECTORnamespace std{   template <class T> class MyVec : public std::vector<T>   {  public:     typedef typename std::vector<T>::reference       base_reference;     typedef typename std::vector<T>::const_reference base_const_reference;     typedef typename std::vector<T>::difference_type base_difference_type;          base_reference operator[](base_difference_type _Off) {       return at(_Off);     }                                                                const_reference operator[](difference_type _Off) const {       return at(_Off);     }   };}#define vector MyVec//-----------------------------------------------------------------//#endif//-----------------------------------------------------------------//#endif //MY_VEC_H_// highlight with http://tohtml.com/

Пользоваться этим надо так определить макрос USE_MY_VECTOR  и инклудить прежде всего "my_vec.h", прежде чем инклудить системный <vector> в исходниках, где есть подозрение на проблему (или по всему проекты автозаменой)