mirror of
https://github.com/boostorg/mpl.git
synced 2025-10-04 03:31:09 +02:00
66 lines
1.8 KiB
ReStructuredText
66 lines
1.8 KiB
ReStructuredText
.. Metafunctions/Concepts//Trivial Metafunction |70
|
|
|
|
.. Copyright Aleksey Gurtovoy, David Abrahams 2007.
|
|
.. 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)
|
|
|
|
Trivial Metafunction
|
|
====================
|
|
|
|
Description
|
|
-----------
|
|
|
|
A |Trivial Metafunction| accepts a single argument of a class type ``x`` and
|
|
returns the ``x``\ 's nested type member ``x::name``, where ``name`` is
|
|
a placeholder token for the actual member's name accessed by a specific
|
|
metafunction's instance. By convention, all `trivial metafunctions`__ in MPL
|
|
are named after the members they provide assess to. For instance, a |Trivial
|
|
Metafunction| named ``first`` reaches for the ``x``\ 's nested member
|
|
``::first``.
|
|
|
|
__ `Trivial Metafunctions Summary`_
|
|
|
|
|
|
Expression requirements
|
|
-----------------------
|
|
|
|
|In the following table...| ``name`` is placeholder token for the names of
|
|
the |Trivial Metafunction| itself and the accessed member, and ``x`` is
|
|
a class type such that ``x::name`` is a valid *type-name*.
|
|
|
|
+---------------------------+-------------------+---------------------------+
|
|
| Expression | Type | Complexity |
|
|
+===========================+===================+===========================+
|
|
| ``name<x>::type`` | Any type | Constant time. |
|
|
+---------------------------+-------------------+---------------------------+
|
|
|
|
|
|
Expression semantics
|
|
--------------------
|
|
|
|
.. parsed-literal::
|
|
|
|
typedef name<x>::type r;
|
|
|
|
:Precondition:
|
|
``x::name`` is a valid *type-name*.
|
|
|
|
:Semantics:
|
|
``is_same<r,x::name>::value == true``.
|
|
|
|
|
|
Models
|
|
------
|
|
|
|
* |first|
|
|
* |second|
|
|
* |base|
|
|
|
|
|
|
See also
|
|
--------
|
|
|
|
|Metafunctions|, |Trivial Metafunctions|, |identity|
|
|
|