blob: 78744f30e0ad2ca862ab44a29fcdb6e7dd633bea [file] [edit]
// Copyright 2017-2020 The Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
[[array-library]]
=== Array Library
OpenCL {cpp} implements part of array library (_chapter 23.3.2_, _[array]_) from the {cpp14} standard.
For the detailed description please refer to {cpp14} standard.
[[header-opencl_array-synopsis]]
==== Header <opencl_array> Synopsis
[source]
----
namespace cl
{
template<class T, size_t N>
struct array
{
//types:
typedef T value_type;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef T& reference;
typedef const T& const_reference;
typedef implementation-defined iterator;
typedef implementation-defined const_iterator;
typedef T* pointer;
typedef const T* const_pointer;
typedef cl::reverse_iterator<iterator> reverse_iterator;
typedef cl::reverse_iterator<const_iterator> const_reverse_iterator;
value_type __elems[N]; // exposition only
// no explicit construct/copy/destroy for aggregate type
// iterators:
iterator begin() noexcept;
const_iterator begin() const noexcept;
iterator end() noexcept;
const_iterator end() const noexcept;
reverse_iterator rbegin() noexcept;
const_reverse_iterator rbegin() const noexcept;
reverse_iterator rend() noexcept;
const_reverse_iterator rend() const;
const_iterator cbegin() const noexcept;
const_iterator cend() const noexcept;
const_reverse_iterator crbegin() const noexcept;
const_reverse_iterator crend() const noexcept;
// capacity:
constexpr size_type size() const noexcept;
constexpr size_type max_size() const noexcept;
constexpr bool empty() const noexcept;
// element access:
reference operator[](size_type n) noexcept;
const_reference operator[](size_type n) const noexcept;
reference front() noexcept;
const_reference front() const noexcept;
reference back() noexcept;
const_reference back() const noexcept;
pointer data();
const_pointer data() const noexcept;
};
template <class T> class tuple_size;
template <size_t I, class T> class tuple_element;
template <class T, size_t N>
struct tuple_size<array<T, N>>;
template <size_t I, class T, size_t N>
struct tuple_element<I, array<T, N>>;
template <size_t I, class T, size_t N>
constexpr T& get(array<T, N>& a) noexcept;
template <size_t I, class T, size_t N>
constexpr T&& get(array<T, N>&& a) noexcept;
template <size_t I, class T, size_t N>
constexpr const T& get(const array<T, N>& a) noexcept;
}
----