10#ifndef XTENSOR_NOALIAS_HPP
11#define XTENSOR_NOALIAS_HPP
13#include "xsemantic.hpp"
23 noalias_proxy(A a)
noexcept;
26 disable_xexpression<E, A> operator=(
const E&);
29 disable_xexpression<E, A> operator+=(
const E&);
32 disable_xexpression<E, A> operator-=(
const E&);
35 disable_xexpression<E, A> operator*=(
const E&);
38 disable_xexpression<E, A> operator/=(
const E&);
41 disable_xexpression<E, A> operator%=(
const E&);
44 disable_xexpression<E, A> operator&=(
const E&);
47 disable_xexpression<E, A> operator|=(
const E&);
50 disable_xexpression<E, A> operator^=(
const E&);
92 inline noalias_proxy<A>::noalias_proxy(A a) noexcept
93 : m_array(std::forward<A>(a))
99 inline auto noalias_proxy<A>::operator=(
const E& e) -> disable_xexpression<E, A>
101 return m_array.assign(xscalar<E>(e));
106 inline auto noalias_proxy<A>::operator+=(
const E& e) -> disable_xexpression<E, A>
108 return m_array.scalar_computed_assign(e, std::plus<>());
113 inline auto noalias_proxy<A>::operator-=(
const E& e) -> disable_xexpression<E, A>
115 return m_array.scalar_computed_assign(e, std::minus<>());
120 inline auto noalias_proxy<A>::operator*=(
const E& e) -> disable_xexpression<E, A>
122 return m_array.scalar_computed_assign(e, std::multiplies<>());
127 inline auto noalias_proxy<A>::operator/=(
const E& e) -> disable_xexpression<E, A>
129 return m_array.scalar_computed_assign(e, std::divides<>());
134 inline auto noalias_proxy<A>::operator%=(
const E& e) -> disable_xexpression<E, A>
136 return m_array.scalar_computed_assign(e, std::modulus<>());
141 inline auto noalias_proxy<A>::operator&=(
const E& e) -> disable_xexpression<E, A>
143 return m_array.scalar_computed_assign(e, std::bit_and<>());
148 inline auto noalias_proxy<A>::operator|=(
const E& e) -> disable_xexpression<E, A>
150 return m_array.scalar_computed_assign(e, std::bit_or<>());
155 inline auto noalias_proxy<A>::operator^=(
const E& e) -> disable_xexpression<E, A>
157 return m_array.scalar_computed_assign(e, std::bit_xor<>());
164 return m_array.assign(e);
171 return m_array.plus_assign(e);
178 return m_array.minus_assign(e);
185 return m_array.multiplies_assign(e);
192 return m_array.divides_assign(e);
199 return m_array.modulus_assign(e);
206 return m_array.bit_and_assign(e);
213 return m_array.bit_or_assign(e);
220 return m_array.bit_xor_assign(e);
Base class for xexpressions.
standard mathematical functions for xexpressions