source:
downloads/boost_1_34_1/libs/mpl/doc/src/refmanual/at.rst
@
29
| Last change on this file since 29 was 29, checked in by landauf, 17 years ago | |
|---|---|
| File size: 4.7 KB | |
at
Synopsis
template<
typename Sequence
, typename N
>
struct at
{
typedef |unspecified| type;
};
template<
typename AssocSeq
, typename Key
, typename Default = |unspecified|
>
struct at
{
typedef |unspecified| type;
};
Description
at is an |overloaded name|:
- at<Sequence,N> returns the N-th element from the beginning of the |Forward Sequence| Sequence.
- at<AssocSeq,Key,Default> returns the first element associated with Key in the |Associative Sequence| AssocSeq, or Default if no such element exists.
Header
#include <boost/mpl/at.hpp>
Model of
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| Sequence | |Forward Sequence| | A sequence to be examined. |
| AssocSeq | |Associative Sequence| | A sequence to be examined. |
| N | |Integral Constant| | An offset from the beginning of the sequence specifying the element to be retrieved. |
| Key | Any type | A key for the element to be retrieved. |
| Default | Any type | A default value to return if the element is not found. |
Expression semantics
For any |Forward Sequence| s, and |Integral Constant| n:
typedef at<s,n>::type t;
| Return type: | A type. |
|---|---|
| Precondition: | 0 <= n::value < size<s>::value. |
| Semantics: | Equivalent to typedef deref< advance< begin<s>::type,n >::type >::type t; |
For any |Associative Sequence| s, and arbitrary types key and x:
typedef at<s,key,x>::type t;
| Return type: | A type. |
|---|---|
| Semantics: | If has_key<s,key>::value == true, t is the value type associated with key; otherwise t is identical to x. |
typedef at<s,key>::type t;
| Return type: | A type. |
|---|---|
| Semantics: | Equivalent to typedef at<s,key,void_>::type t; |
Complexity
| Sequence archetype | Complexity |
|---|---|
| |Forward Sequence| | Linear. |
| |Random Access Sequence| | Amortized constant time. |
| |Associative Sequence| | Amortized constant time. |
Example
typedef range_c<long,10,50> range; BOOST_MPL_ASSERT_RELATION( (at< range, int_<0> >::value), ==, 10 ); BOOST_MPL_ASSERT_RELATION( (at< range, int_<10> >::value), ==, 20 ); BOOST_MPL_ASSERT_RELATION( (at< range, int_<40> >::value), ==, 50 );
typedef set< int const,long*,double > s; BOOST_MPL_ASSERT(( is_same< at<s,char>::type, void_ > )); BOOST_MPL_ASSERT(( is_same< at<s,int>::type, int > ));
Note: See TracBrowser
for help on using the repository browser.










