This struct template implements the is_function meta‐function defined in the C++11 standard [meta.unary.cat]to determine if the (template parameter) t_TYPE is a function type. This struct derives from bsl::true_type if the t_TYPE is a function type, and from bsl::false_type otherwise. This implementation relies on the fact that neither function types nor reference types can be cv‐qualified so that is_const<const t_TYPE> will actually yield false.

Synopsis

Declared in <bslmf_isfunction.h>

template<class t_TYPE>
struct is_function
    : bsl::integral_constant<bool, !is_const<const t_TYPE>::value>

Base Classes

Name

Description

bsl::integral_constant<bool, !is_const<const t_TYPE>::value>

Metafunction representing a compile‐time constant of the specified (template parameter) t_TYPE with the specified (template parameter) t_VALUE.

Type Aliases

Name

Description

type

Alias for this integral_constant specialization.

value_type

Member Functions

Name

Description

operator()

Return a copy of the template argument t_VALUE.

operator value_type

Static Data Members

Name

value

Specializations

Name

Description

is_function<t_TYPE&>

Reference types are, self‐evidently, never function types. The idiom for detecting function types in this component is that a function is a type that is the same as the const‐qualified version of that same type. As references also have this property, we must filter out references with this partial specialization.

is_function<t_TYPE&&>

Reference types are, self‐evidently, never function types. The idiom for detecting function types in this component is that a function is a type that is the same as the const‐qualified version of that same type. As references also have this property, we must filter out references with this partial specialization.

Created with MrDocs