Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/mpl/doc/src/refmanual/at.rst @ 12

Last change on this file since 12 was 12, checked in by landauf, 18 years ago

added boost

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.

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 > ));

Docutils System Messages

??????????????????????
Note: See TracBrowser for help on using the repository browser.