Столкнулся с тем что в режиме совместимости с ANSI С++ (/Za), VS2008 перестает видеть члены базового класса, если тот объявлен внутри класса-шаблона. Отсюда вопрос знатокам: это бага маздая или фича ANSI?
template<class A> class CMain
{
//
public:
//
class CBase
{
//
public:
//
int m_aaa;
CBase(void) { m_aaa = 0; }
};
//
class CTest : public CBase
{
//
public:
//
CTest(void)
{
m_aaa = 0; // компилируется только если включено маздаевское расширение языка С++ или если класс CMain не является шаблоном, иначе верещит что m_aaa не объявлен
CBase::m_aaa = 0; // компилируется всегда, в т.ч. и в режиме ANSI С++ (/Za)
}
};
};