This patch adds __complete_type (along with some helpers). It also updates is_invocable to assert that it's template parameters are complete types, void, or an unbounded array.
The patch introduces a lot of helper structs which create some bloat. If you decide that it would be better if it were more condensed, that is fine with me. I decided to start with maximum verbosity though.