Not able to understand the return type

We are returning *f which is a value of type T but in the function definition we have written t& operator[](string key)… and we know that the data type we mention in function definition i.e t& here should be returned. But we are returning the value by dereferencing the f pointer (*f). How is this working?

&T stores address and we are return a pointer which points to an address