See this comment on a previous issue. Matching macros on exact type names prevents users from calling the macros with fully qualified type names or typedefs.
Possible solutions include trait specialization (which will likely be unstable for some time) and std::any trickery.