Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.

Struct template is_callable

boost::proto::is_callable — Boolean metafunction which tells whether a type is a callable PolymorphicFunctionObject or not.


template<typename T> 
struct is_callable {


proto::is_callable<> is used by the proto::when<> transform to determine whether a function type R(A1,...n) is a CallableTransform or an ObjectTransform. The former are evaluated using proto::call<> and the later with proto::make<>. If proto::is_callable<R>::value is true, the function type is a CallableTransform; otherwise, it is an ObjectTransform.

Unless specialized for a type T, proto::is_callable<T>::value is computed as follows:

  • If T is a template type X<Y0,...Yn>, where all Yx are types for x in [0,n], proto::is_callable<T>::value is boost::is_same<Yn, proto::callable>::value.

  • If T is derived from proto::callable, proto::is_callable<T>::value is true.

  • Otherwise, proto::is_callable<T>::value is false.