| // 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; |
| |
| } |
| ---- |