In 99% of the cases, you don't need to know the type. You don't need to discover the type.
If you think you have an example of where it might be useful, feel free to post it. Usually, there is an elegant solution without RTTI.
For example, take a look at the standard library: it uses templates almost exclusively. I have never seen any use of RTTI, yet it works perfectly.
There are drawbacks to RTTI too, because it allows you identify a specific type, but there can be an infinite amount of types, which means adding support to each and every one of them.
Not a really good idea. Instead you can generalize it by stating that the type should support a common interface and work from that. It means that all types that has this interface works with the code, regardless of type.