Title
CTAD function_ref of data member pointer should produce noexcept signature
Status
voting
Section
[func.wrap.ref.deduct]
Submitter
Tomasz Kamiński

Created on 2025-10-20.00:00:00 last changed yesterday

Messages

Date: 2025-10-21.16:45:52

Proposed resolution:

This wording is relative to N5014.

  1. Modify [func.wrap.ref.deduct] as indicated:

    template<class F>
    function_ref(nontype_t<f>, T&&) -> function_ref<see below>;
    

    Let F be decltype(f).

    -6- Constraint:

    1. (6.1) — F is of the form R(G::*)(A...) cv &opt noexcept(E) for type G, or
    2. (6.2) — F is of the form M G::* for type G and object type M, in which case let R be invoke_result_t<F, T&>, A... be an empty pack, and E be false true, or
    3. (6.3) — F is of the form R(*)(G, A...) noexcept(E) for type G.

    -7- Remarks: The deduced type is function_ref<R(A...) noexcept(E)>.

Date: 2025-10-15.00:00:00

[ 2025-10-21; Reflector poll. ]

Set status to Tentatively Ready after six votes in favour during reflector poll.

Date: 2025-10-20.00:00:00
Addresses PL-005.

For data member pointer M C::* dmp, template argument deduction in form std::function_ref fr(std::nontype<dmp>, x) results in std::function_ref<M&()>, that returns a reference to designated member. As accessing a data member can never throw exception and function_ref support noexcept qualifed function types, the deduction guide should be updated to produce noexcept-qualified signature.

History
Date User Action Args
2025-10-30 17:45:31adminsetstatus: ready -> voting
2025-10-21 16:45:52adminsetmessages: + msg15336
2025-10-21 16:45:52adminsetstatus: new -> ready
2025-10-20 13:37:49adminsetmessages: + msg15272
2025-10-20 00:00:00admincreate