As prefigured in the comments on D115315.
This gives us one unified style for all niebloids, and also simplifies the modulemap: it's important that we do this simplification before the modulemap gets completely out of hand.
(This was split out of D116384. @ldionne, this is the PR where we can argue about whether __function_like provides a benefit to justify its IMO-high maintenance cost.)
Missing #include <type_traits>.