4#ifndef TETL_LINALG_ACCESSOR_CONJUGATE_HPP
5#define TETL_LINALG_ACCESSOR_CONJUGATE_HPP
7#include <etl/_linalg/conjugated_scalar.hpp>
8#include <etl/_type_traits/add_const.hpp>
9#include <etl/_type_traits/conditional.hpp>
10#include <etl/_type_traits/is_arithmetic.hpp>
11#include <etl/_type_traits/remove_cv.hpp>
16template <
typename Accessor>
18 using reference = conditional_t<
19 is_arithmetic_v<remove_cv_t<
typename Accessor::element_type>>,
20 typename Accessor::reference,
21 detail::conjugated_scalar<
typename Accessor::reference, remove_cv_t<
typename Accessor::element_type>>
23 using element_type = add_const_t<conditional_t<
24 is_arithmetic_v<remove_cv_t<
typename Accessor::element_type>>,
25 typename Accessor::element_type,
26 typename reference::value_type
28 using data_handle_type =
typename Accessor::data_handle_type;
29 using offset_policy = conditional_t<
30 is_arithmetic_v<remove_cv_t<
typename Accessor::element_type>>,
31 typename Accessor::offset_policy,
43 return reference(_nestedAccessor.access(p, i));
50 _nestedAccessor.offset(p, i);
55 return _nestedAccessor;
59 Accessor _nestedAccessor;
Definition accessor_conjugate.hpp:13
Definition adjacent_find.hpp:9
Definition accessor_conjugate.hpp:17
constexpr auto nested_accessor() const -> Accessor
Definition accessor_conjugate.hpp:53
constexpr accessor_conjugate(Accessor a)
Definition accessor_conjugate.hpp:35
constexpr auto offset(data_handle_type p, size_t i) const noexcept(noexcept(_nestedAccessor.offset(p, i))) -> typename offset_policy::data_handle_type
Definition accessor_conjugate.hpp:47
constexpr auto access(data_handle_type p, size_t i) const noexcept(noexcept(reference(_nestedAccessor.access(p, i)))) -> reference
Definition accessor_conjugate.hpp:41