bsl::is_function

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

NameDescription
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

NameDescription
type Alias for this integral_constant specialization.
value_type

Member Functions

NameDescription
operator() Return a copy of the template argument t_VALUE.
operator value_type

Static Data Members

Name
value

Specializations

NameDescription
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.