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

### 1024. `std::function` constructors overly generous

Section: 20.14.17.3 [func.wrap.func] Status: NAD Concepts Submitter: Alisdair Meredith Opened: 2009-03-11 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [func.wrap.func].

View all issues with NAD Concepts status.

Discussion:

Addresses JP 39 [CD1]

There are no requires corresponding to `F` of `std::function`.

[ 2009-05-01 Daniel adds: ]

> 1070 removes the second constructor.

[ Batavia (2009-05): ]

> We agree with the proposed resolution. Move to Tentatively Ready. If issue 1070 is accepted, the changes to the second constructor in this issue are moot.

[ 2009-07 Frankfurt: ]

> Constructors have no definition.

Proposed resolution:

Correct as follows in 20.14.17.3 [func.wrap.func] (class definition)

>      template<class F, Allocator Alloc>
>        requires ConstructibleWithAllocator<F, Alloc>
>          && call=Callable<F, ArgTypes...>
>          && Convertible<call::result_type, R>
>        function(allocator_arg_t, const Alloc&, F);
>      template<class F, Allocator Alloc>
>        requires ConstructibleWithAllocator<F,Alloc>
>          && call=Callable<F, ArgTypes...>
>          && Convertible<call::result_type, R>
>        function(allocator_arg_t, const Alloc&, F&&);