From d2e8ee7416f72c45cfe46cb92bf433b1ec23f7fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Kr=C3=BCgler?=
+std::bind_front<42>() seems to be currently well-formed, but the result isn't invocable with any arguments.
+Given we are already detecting types and values of the NTTP for new overloads of std::bind_front,
+std::bind_back, and std::not_fn, it might be better to diagnose such cases when NTTP is of a scalar type.
+
+This wording is relative to
Modify the
++ ++template<auto f> constexpr unspecified not_fn() noexcept; +++++-6- […] +
+-7- Mandates: Ifis_pointer_v<F> || is_member_pointer_v<F> is true, then +f != nullptr is trueis_scalar_v<F> is true, then either +is_pointer_v<F> && is_function_v<remove_pointer_t<F>> is true or +is_member_pointer_v<F> is true, and f != nullptr is true in either case. + +
Modify the
++ ++template<auto f, class... Args> + constexpr unspecified bind_front(Args&&... args); +template<auto f, class... Args> + constexpr unspecified bind_back(Args&&... args); +++++-6- […] +
+-7- Mandates: + ++
+- +
(7.1) — […]
- +
(7.2) — […]
- +
(7.3) — if
is_pointer_v<F> || is_member_pointer_v<F> is true, then +f != nullptr is trueis_scalar_v<F> is true, then either +is_pointer_v<F> && is_function_v<remove_pointer_t<F>> is true or +is_member_pointer_v<F> is true, and f != nullptr is true in either case.