This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of WP status.

### 3771. [fund.ts.v3] remove binders typedefs from `function`

Section: 99 [fund.ts.v3::func.wrap.func.overview] Status: WP Submitter: Alisdair Meredith Opened: 2022-09-12 Last modified: 2022-11-17

Priority: Not Prioritized

View all issues with WP status.

Discussion:

Addresses: fund.ts.v3

The LFTSv3 bases its specification for `experimental::function` on `std::function` in the C++20 standard. However, the wording was largely copied over from LFTSv2 which based its wording on the C++14 standard.

For C++17, we removed the conditionally defined typedefs for the legacy binders API, but this removal was not reflected in the TS. We are now left with a specification referring to unknown types, `T1` and `T2`.

These typedefs should be excised to match the referenced standard.

[2022-09-23; Reflector poll]

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

[2022-11-12 Approved at November 2022 meeting in Kona. Status changed: Voting → WP.]

Proposed resolution:

This wording is relative to N4920.

1. Modify the synopsis in 99 [fund.ts.v3::func.wrap.func.overview] as indicated:

   >     namespace std {
   >       namespace experimental::inline fundamentals_v3 {

   >         template<class> class function; // undefined

   >         template<class R, class... ArgTypes>
   >         class function<R(ArgTypes...)> {
   >         public:
   >           using result_type = R;
   >           using argument_type = T1;
   >           using first_argument_type T1;
   >           using second_argument_type = T2;

   >           using allocator_type = erased_type;

   >           // ...
   >       }
   >     }