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.
Declared in <bslmf_isfunction.h>
template<class t_TYPE>
struct is_function
: bsl::integral_constant<bool, !is_const<const t_TYPE>::value>
| 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. |
| Name | Description |
|---|---|
type | Alias for this integral_constant specialization. |
value_type |
| Name | Description |
|---|---|
operator() | Return a copy of the template argument t_VALUE. |
operator value_type |
| Name |
|---|
value |
| 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. |