get

namespace opentl {
    template <opentl::size_t I, typename T, opentl::size_t N>
    constexpr T& get(opentl::array<T, N>& arr) noexcept;

    template <opentl::size_t I, typename T, opentl::size_t N>
    constexpr T&& get(opentl::array<T, N>&& arr) noexcept;

    template <opentl::size_t I, typename T, opentl::size_t N>
    constexpr const T& get(const opentl::array<T, N>& arr) noexcept;

    template <opentl::size_t I, typename T, opentl::size_t N>
    constexpr const T&& get(const opentl::array<T, N>&& arr) noexcept;
}

Returns a reference to the element at the specified index of an array.

Declared in <array/get.hpp>.

Template Parameters

Name Description
I The element index.
T The element type.
N The array size.

Parameters

Name Description
arr The array to read from.

Return Value

A reference (l-value or r-value, const or non-const, matching the argument) to the element at index I.

Exceptions

None. The function is noexcept. If I >= N, a static_assert fires at compile time.

Overloads

Overload Return Type Description
get<I>(array<T, N>&) T& Non-const l-value array; returns a non-const l-value reference.
get<I>(array<T, N>&&) T&& Non-const r-value array; returns a movable r-value reference.
get<I>(const array<T, N>&) const T& Const l-value array; returns a const l-value reference.
get<I>(const array<T, N>&&) const T&& Const r-value array; returns a const r-value reference.

Example

#include <opentl/array.hpp>
#include <array/get.hpp>

int main() {
    opentl::array<int, 3> arr{1, 2, 3};
    int& a = opentl::get<0>(arr);        // l-value
    const int& b = opentl::get<1>(arr);  // const l-value
    int moved = opentl::get<2>(opentl::array<int, 3>{1, 2, 3});  // r-value
}