Поскольку при разборе объявления шаблона T не известен. Таким образом, компилятор не знает, существует ли T :: size_type вообще. Это может относиться к статической переменной, например. Когда вы позже используете шаблон, T, конечно, известен, но ошибка происходит раньше. И, пожалуйста, используйте что-то менее древнее, чем gcc 4.0.1; -)
Edit: Если вы скомпилируете это с -fpermissive, компилятор, вероятно, жует ваш код, но он выдаст предупреждение.