Vec_t не является зависимым именем, и компилятор должен знать, что это такое, без создания каких-либо шаблонов (в данном случае это базовый класс). Это действительно ничем не отличается от:
template <class T>
class X
{
std::string s;
}
Здесь компилятору также необходимо знать о std :: string, даже если X не создан, поскольку имя не зависит от аргумента шаблона T (насколько может предположить компилятор).
В целом, typedefs в базовом классе шаблона кажутся довольно бесполезными для использования в производном классе. Однако typedefs полезны для пользователя.