As mentioned by @pervognsen , C++20 allows floats as template parameters. But. But! If you look at the Itanium C++ ABI, you'll see that it has been describing mangling rules for floats since the beginning.
Hence, a puzzle: how is it possible to write an entity that contains a float in its mangled name in C++98?