Почему стандарт С++ указывает, что неквалифицированные имена в шаблоне не зависят?
например.
template<typename T>
class Base
{
public:
T x;
};
template<typename T>
class C : public Base<T>
{
public:
bool m() { return x == 0; } // Error: undeclared identifier 'x'
};
Цитата из принятого ответа на SO question о том, как преодолеть ограничение:
В стандарте указано, что неквалифицированные имена в шаблоне не зависящий от него, и его нужно искать, когда шаблон определен. определение зависимого базового класса в это время неизвестно (могут существовать специализированные шаблоны базового класса), поэтому неквалифицированные имена не могут быть разрешены.
Однако в цитированных и других ответах не указывается, почему это указано в стандарте. В чем причина этого ограничения?