выбрать пакет будет реорганизован, refactor-> move -> "переместить xxx в новый пакет"
Позже версии GCC правильно реализуют стандарт.
стандарт определяет, что дисквалифицированные имена в шаблоне независимы и должны искаться, когда шаблон определяется. Определение зависимого базового класса неизвестно в то время (специализации шаблона базового класса могут существовать), таким образом, дисквалифицированные имена неспособны быть разрешенными.
Это верно и для имен переменной и для имен функций, объявленных в базовом классе.
, Как Вы заметили, решение состоит в том, чтобы обеспечить полностью определенное имя переменной или функции, или обеспечить объявление "использования". Например,
template<class T>
int Bar<T>::Perna(int u)
{
int c = Foo<T>::a * 4; // This works
c = this->a * 4; // and this
using Foo<T>::a;
c = a * 4; // and with 'using', so should this
}
(я на самом деле не на 100% уверен в правильном синтаксисе для версии использования и не могу протестировать отсюда, но Вы получаете идею).