The simple test expression: static_assert(!std::is_invokable_v<void>); is expected to compile, but libc++ rejects this as 'void' is not a complete type. According to the standard, the requirements on "Fn" are: "Fn and all types in the template parameter pack ArgTypes shall be complete types, cv void, or arrays of unknown bound." This may be boiler-plate standardese for handling incomplete types that merits an LWG issue instead, but note that gcc handles this case correctly.
Oops, please withdraw - it turns out I was accidentally compiling with the Apple default Clang 6, which presumably predates the standard changing. Clang 7 lib handles this correctly. Sorry for the noise.
Aaargh! Even more noise - and a resubmit! It is still failing, but for a different reason since Clang 7. Looks like my successful build was an off-by-one in my command line history and I re-ran the gcc test.
Minor nit: I was unable to reproduce this as submitted. But when I spelled it correctly ("is_invocable_v"), then I got the error.
https://llvm.org/D57364 up for review.
You may want to add an abominable function to the test harness, as it seems they also fail, e.g., int( ) & int(...) & int( ) & noexcept int(...) & noexcept
Fixed in r352522.