Forward declaration of the component-private Function_IsInvocableWithPrototype struct template. The primary (unspecialized) template is not defined. This struct template implements a boolean metafunction that publicly inherits from bsl::true_type if an object of the specified FUNC type is invocable under the specified PROTOTYPE, and inherits from bsl::false_type otherwise. An object of FUNC type is invocable under the PROTOTYPE if it is Lvalue-Callable with the arguments of the PROTOTYPE, and returns an object of type convertible to the return type of the PROTOTYPE. If the return type of the PROTOTYPE is void, then any type is considered convertible to the return type of the PROTOTYPE. In C++03, FUNC is considered Lvalue-Callable with the argument and return types of the PROTOTYPE if it is not an integral type. This struct template requires PROTOTYPE to be an unqualified function type.
Declared in <bslstl_function.h>
template<
class PROTOTYPE,
class FUNC>
struct Function_IsInvocableWithPrototype;
| Name | Description |
|---|---|
Function_IsInvocableWithPrototype<RET(ARGS...), FUNC> | This component-private struct template provides a boolean metafunction that derives from bsl::true_type if a bsl::function object having a prototype of RET(ARGS...) is constructible from an object of type FUNC, and derives from bsl::false_type otherwise. This metafunction is a wrapper around bsl::invoke_result that unwraps FUNC if it is a specialization of bslalg::NothrowMovableWrapper; and, if bsl::invoke_result provides a nested type typedef for FUNC and RET is non-void, checks that the return type of the invoke operation on FUNC is convertible to RET. |