Вот такая конструкция у меня не собирается
template<typename T>
class C1
{
protected:
T val;
bool v;
};
template <typename T>
class C2 : public C1<T>
{
public:
void foo()
{
val = 0;
v = false;
}
};
int main(int argc, char* argv[])
{
C2<int> c;
c.foo();
return 0;
}
Пишет такое:
g++ main.cpp -o test
main.cpp: В функции-члене «void C2<T>::foo()»:
main.cpp:15:3: ошибка: нет декларации «val» в этой области видимости
main.cpp:16:3: ошибка: нет декларации «v» в этой области видимости
Если в функции указать явно C1<T>::val, = 0 то все ок. Подскажите, это нормальное поведение? можно как то избежать явного указания родительского класса?
gcc версия 4.6.1
P.S. пытаюсь собрать сторонюю либу, там таких конструкций горы