Please wait until ~ Thursday next week before shipping this. It touches a lot of stuff and I want to make cherry-picks for LLVM 15 as easy as possible.
Also, pending green CI as usual.
Please check the other files as well.
Per live review, can you please provide a link to a bug report regarding the poisoned hash helper test? This shouldn't be necessary.
You're missing an include of can_extract_key.h. I know it's not needed in <type_traits>, but we decided a while back that top-level headers would include all the files in their detail directory, so let's be consistent.
Per our discussion, it might make sense to change this approach to only include the public interface from our top-level headers, but let's not try to change the world in this commit.