Стоит отметить, что это можно сделать во время компиляции в более удобочитаемой форме с помощью static_assert. Что-то в строках:
class Base {};
template<class B>
class Template{
static_assert(std::is_base_of<Base, B>::value, "B must derive from nmspc::Base");
}
Это работает, даже когда B является точно базовой.
Если Base сам по себе является шаблонным классом, он становится более сложным, но это все еще можно сделать, и в Интернете достаточно ресурсов.