They are essentially the same but using provides alias templates which is quite useful. One good example I could find is as follows:
namespace std {
template using add_const_t = typename add_const::type;
}
So, we can use std::add_const_t instead of typename std::add_const::type