If I understand correctly, you think it's dangerous that the types used in the transformed function and the call-site are different –– the former uses the backing storage's type, when the latter uses the wrapped or projected values' types.
I don't see how that is dangerous, though. Could you elaborate on that?
I don't see how that would help.