Doubt about pointer and reference in hashing operator overloading code

In this video if we are returning T a pointer to the value of type T. Then why are we writing T& as the return type of this function. Why isn’t the return type T?

return type is *T because we are returning a pointer
but value inside pointer should be an address so we return &T
and also we need refrence of T in main to update its value hence we have to do that