Back to Arangodb

Metafunction Class

3rdParty/boost/1.78.0/libs/mpl/doc/src/refmanual/MetafunctionClass.rst

3.12.9.12.7 KB
Original Source

.. Metafunctions/Concepts//Metafunction Class |20

Metafunction Class

Summary

A metafunction class is a certain form of metafunction representation that enables higher-order metaprogramming. More precisely, it's a class with a publicly-accessible nested |metafunction| called apply. Correspondingly, a metafunction class invocation is defined as invocation of its nested apply metafunction.

Expression requirements

|In the following table...| f is a |Metafunction Class|.

+-------------------------------+---------------------------+---------------------------+ | Expression | Type | Complexity | +===============================+===========================+===========================+ | f::apply::type | Any type | Unspecified. | +-------------------------------+---------------------------+---------------------------+ | f::apply<>::type | Any type | Unspecified. | +-------------------------------+---------------------------+---------------------------+ | f::apply<a1,...an>::type | Any type | Unspecified. | +-------------------------------+---------------------------+---------------------------+

Expression semantics

.. parsed-literal::

typedef f::apply::type x;

:Precondition: f is a nullary |Metafunction Class|; f::apply::type is a type-name.

:Semantics: x is the result of the metafunction class invocation.

.. ...................................................................................

.. parsed-literal::

typedef f::apply<>::type x;

:Precondition: f is a nullary |Metafunction Class|; f::apply<>::type is a type-name.

:Semantics: x is the result of the metafunction class invocation.

.. ...................................................................................

.. parsed-literal::

typedef f::apply<a1,\ |...|\ a\ *n*\>::type x;

:Precondition: f is an n-ary metafunction class; apply is a |Metafunction|.

:Semantics: x is the result of the metafunction class invocation with the actual arguments |a1...an|.

Models

  • |always|
  • |arg|
  • |quote|
  • |numeric_cast|
  • |unpack_args|

See also

|Metafunctions|, |Metafunction|, |Lambda Expression|, |Invocation|, |apply_wrap|, |bind|, |quote|

.. copyright:: Copyright 2001-2009 Aleksey Gurtovoy and David Abrahams Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)