This is information that the compiler already has, and should be exposed
so that the library doesn't need to reimplement the exact same
Similarly to __is_move_construcitble, etc., these traits can't be
implemented using __is_assignable, etc., because we can't form
references to void, and references are a fundamental part of move
This was originally a part of D116280.
Depends on D135240.