Поскольку, похоже, нет способа увеличить внутреннее ограничение компилятора на длину оформленного имени, я прикусила маркер и внесла изменения, предложенные в MSDN. см .: http://msdn.microsoft.com/en-us/library/074af4b6.aspx
Мне нужно было только изменить первый typedef на struct. Это потребовало около 200 других изменений в унаследованном коде, что было утомительно, но в остальном не сложно. Тем не менее, я буду проводить следующую неделю или около того в регрессионном тестировании, чтобы убедиться, что это ничего не испортило.
Вот основное изменение: (обратите внимание, что я был вынужден добавить несколько структур в структуру)
enum Type{
TYPE_COUNT,
TYPE_VALUE
};
struct Containers
{
MyVector<Container*, CriticalSectionLock > Element;
Containers(int num, Container* elem):Element(num, elem){}
Containers(){}
};
typedef MyVector< MyClassType*, CriticalSectionLock >::const_iterator const_iterator_type;
typedef MyVector< stl::pair< string, Type > >::const_iterator const_iterator_def;
typedef MyVector< Container** >::const_iterator const_iterator_container;
typedef MyVector< stl::pair < MyBase*, MyVector< stl::pair< Container**, Containers* > > > >::const_iterator const_iterator;