Boost logo

Boost :

From: Tobias Schwinger (tschwinger_at_[hidden])
Date: 2005-07-02 17:59:22


Synopsis:
---------

namespace boost
{
    namespace function_type
    {

   // Classification (header: boost/function_type/classification.hpp)

      // Result: bool, Concept: MPL-Integral Constant
      template<typename T, typename Tag = no_attributes> struct is_function;
       % % struct is_function_pointer;
       % % struct is_function_reference;
       % % struct is_member_function_pointer;

       % % struct is_callable_builtin; // any of the above
       % % struct is_callable_scalar; // any except undecorated
       % % struct is_nonmember_callable_builtin; // any except member pointers
       % % struct is_nonmember_callable_scalar; // function pointer or reference

   // Synthesis (header: boost/function_type/synthesis.hpp)

      // Result: type, Concept: Metafunction
      template<typename T_or_Signature_or_Seq
              ,typename Tag = no_attributes, typename ClassT = add_reference<_> >
      struct function_type;
       % % struct function_pointer;
       % % struct function_reference;
       % % struct member_function_pointer;

   // Decomposition (header: boost/function_type/decomposition.hpp)

      // Result: bool, Concept: MPL-Integral Constant
      template<typename T> struct arity<T>;

      // Result: type, Concept: Metafunction
      template<typename T> struct class_of;
      template<typename T> struct result;

      template<typename T, typename Index> struct parameter;
      template<typename T, std::size_t Index> struct parameter_c;

      template<typename T, typename Index> struct effective_parameter;
      template<typename T, std::size_t Index> struct effective_parameter_c;

      // Concept: MPL Random-Access Sequence
      template<typename T> struct parameters;
      template<typename T, typename ClassT = add_reference<_> >
      struct effective_parameters;

      // Concept: MPL Extensible/Random-Access Sequence and Tag
      template<typename T, typename ClassT = add_reference<_> >
      struct signature;

   // Tags (no header needed - "just there")

      template<typename Tag1, typename Tag2 = ...
      struct tag;

      // - variadic property
      // defaults to 'nonvariadic' with synthesis
      typedef /.../ nonvariadic;
      typedef /.../ variadic;

      // - const aspect (ignored for nonmember functions)
      // defaults to the const qualification of the class type with synthesis
      typedef /.../ const_member;
      typedef /.../ nonconst_member;

      // - volatile aspect (ignored for nonmember functions)
      // defaults to the volatile qualification of the class type with synthesis
      typedef /.../ volatile_member;
      typedef /.../ nonvolatile_member;

      // Calling convention aspect
      // defaults to default_call when used with synthesis
      typedef /.../ default_call;
      typedef /.../ cdecl, stdcall, etc. (depends on configuration)
    }
}


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk