at least there is a way to do some typechecking:
GLM_STATIC_ASSERT(detail::type<genType>::is_float, "'length' only accept floating-point inputs");

maybe we should do 
GLM_STATIC_ASSERT(detail::type<T>::is_vector, "'safeNormalize' only accept float vectors");
GLM_STATIC_ASSERT(detail::type<T>::is_float, "'safeNormalize' only accepts float vectors");

Otherwise these assertions will appear inside glm and it would be harder to trace them to this helper class. Because (afaik) the compiler only shows the starting point (.cpp) and the error (glm::length)