1024. std::function constructors overly generous

Section: 22.10.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 22.10.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&&);