This patch fixes the constrains on the __perfect_forward constructor
and its call operators, which were incorrect. In particular, it makes
sure that we closely follow [func.require], which basically says that
we must deliver the bound arguments with the appropriate value category
or make the call ill-formed, but not silently fall back to using a
different value category.
As a fly-by, this patch also:
- Adds types bind_front_t and not_fn_t to make the result of calling bind_front and not_fn more opaque, and improve diagnostics for users.
- Adds a bunch of tests for bind_front and remove some that are now redundant.
- Adds some missing _LIBCPP_HIDE_FROM_ABI annotations.
Immense thanks to @tcanens for raising awareness about this issue, and
providing help with the = delete bits.
I'd call this whitespace wrong. (Did clang-format do this?) template<class... Ts> is better than template<class ...Ts>.