| Home | Libraries | People | FAQ | More

### const Ranges

`range_reference<const Range>::type` is defined by the following algorithm. Let `Range` be any type listed above and `Ref` be the same as `range_reference<Range>::type`.

    if (Range is CObArray || Range is CObList)
        return CObject const * &
    else if (Range is CPtrArray || Range is CPtrList)
        return void const * &
    else if (there is a type X such that X& is the same as Ref)
        return X const &
    else if (there is a type X such that X* const is the same as Ref)
        return X const * const
    else
        return Ref

Other Boost.Range metafunctions are defined by the following.

Range metafunction | Result
--- | ---
`range_value<const Range>::type` | `range_value<Range>::type`
`range_difference<const Range>::type` | `std::ptrdiff_t`
`range_pointer<const Range>::type` | `add_pointer<remove_reference<range_reference<const Range>::type>::type>::type`