@kimapr
> cast random pointers left and right
TBH that's how I see C programming in a nutshell 😂
@jakub_neruda When I've encountered this problem I've concluded that it's not currently possible to partially specify template parameters for constructors, and from quick search it doesn't seem to have changed. Unfortunately I do not have a reference to standard, so I might be missing something.
Have you considered using `std::type_identity<T>` or a similar wrapper to pass types as arguments? While not as clean it might work when you cannot use a function template.
@mkretz I think with Cartesian representation being standard defining multiplication and division defines how zeros and infinities are handled because of the IEEE 754. I think making stronger guarantees is excessive. Would it interfere with usage of FMA instructions?
Handling of edge float values already requires special attention, and a situation that requires knowing argument of infinities and zeros seems like a very special and niche case, and non-standard representation should be used.