cpp/utility/functional/move only function/move only function

Creates a new.

@1-2@ Default constructor and the constructor taking construct an empty.

@3@ Move constructor constructs a whose target is that of. is in a valid but unspecified state after move construction.

@4@ Copy constructor is deleted. does not satisfy.

@5@ Let be. If is a null function pointer, a null pointer to member value, or an empty  (may be any specialization), then constructs an empty. Otherwise, constructs a whose target is of type  and direct-non-list-initialized with.
 * The program is ill-formed if is not.
 * The program is ill-formed if is not.

@6@ Let be. Constructs a whose target is of type  and direct-non-list-initialized with.
 * The program is ill-formed if is not the same type as.
 * The program is ill-formed if is not the same type as.

@7@ Let be. Constructs a whose target is of type  and direct-non-list-initialized with.
 * The program is ill-formed if is not the same type as.
 * The program is ill-formed if is not the same type as.

For constructors, the behavior is undefined if does not satisfy the  requirements, or  is  but  does not satisfy the  requirements.

The constant is dependent on, , and  in the template parameter of  as below:

Exceptions
@5-7@ May throw std on allocation failure or propagate the exception thrown by the initialization of the target. No exception is thrown if is a function pointer type or a specialization of std.