blob: 5dd6291c96c064b295036d36fb2851d864568afd [file] [log] [blame]
.. Metafunctions/Concepts//Trivial Metafunction |70
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|
.. 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)