tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
accessor_conjugate.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_LINALG_ACCESSOR_CONJUGATE_HPP
4#define TETL_LINALG_ACCESSOR_CONJUGATE_HPP
5
11
12namespace etl::linalg {
13
15template <typename Accessor>
19 typename Accessor::reference,
20 detail::conjugated_scalar<typename Accessor::reference, remove_cv_t<typename Accessor::element_type>>>;
21 using element_type = add_const_t<conditional_t<
23 typename Accessor::element_type,
24 typename reference::value_type>>;
25 using data_handle_type = typename Accessor::data_handle_type;
28 typename Accessor::offset_policy,
30
31 constexpr accessor_conjugate(Accessor a)
32 : _nestedAccessor(a)
33 {
34 }
35
36 [[nodiscard]] constexpr auto access(data_handle_type p, size_t i) const
37 noexcept(noexcept(reference(_nestedAccessor.access(p, i)))) -> reference
38 {
39 return reference(_nestedAccessor.access(p, i));
40 }
41
42 [[nodiscard]] constexpr auto offset(data_handle_type p, size_t i) const
43 noexcept(noexcept(_nestedAccessor.offset(p, i))) -> typename offset_policy::data_handle_type
44 {
45 _nestedAccessor.offset(p, i);
46 }
47
48 [[nodiscard]] constexpr auto nested_accessor() const -> Accessor { return _nestedAccessor; }
49
50private:
51 Accessor _nestedAccessor;
52};
53
54} // namespace etl::linalg
55
56#endif // TETL_LINALG_ACCESSOR_CONJUGATE_HPP
Definition accessor_conjugate.hpp:12
typename conditional< B, T, F >::type conditional_t
Definition conditional.hpp:21
constexpr bool is_arithmetic_v
Definition is_arithmetic.hpp:21
constexpr auto nested_accessor() const -> Accessor
Definition accessor_conjugate.hpp:48
typename Accessor::data_handle_type data_handle_type
Definition accessor_conjugate.hpp:25
add_const_t< conditional_t< is_arithmetic_v< remove_cv_t< typename Accessor::element_type > >, typename Accessor::element_type, typename reference::value_type > > element_type
Definition accessor_conjugate.hpp:21
constexpr accessor_conjugate(Accessor a)
Definition accessor_conjugate.hpp:31
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:42
conditional_t< is_arithmetic_v< remove_cv_t< typename Accessor::element_type > >, typename Accessor::offset_policy, accessor_conjugate< typename Accessor::offset_policy > > offset_policy
Definition accessor_conjugate.hpp:26
constexpr auto access(data_handle_type p, size_t i) const noexcept(noexcept(reference(_nestedAccessor.access(p, i)))) -> reference
Definition accessor_conjugate.hpp:36
conditional_t< is_arithmetic_v< remove_cv_t< typename Accessor::element_type > >, typename Accessor::reference, detail::conjugated_scalar< typename Accessor::reference, remove_cv_t< typename Accessor::element_type > > > reference
Definition accessor_conjugate.hpp:17