diff --git a/xml/issue3979.xml b/xml/issue3979.xml
new file mode 100644
index 0000000000..37fb6cc731
--- /dev/null
+++ b/xml/issue3979.xml
@@ -0,0 +1,81 @@
+
+
+
+
+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.