10#ifndef XTENSOR_NOALIAS_HPP 
   11#define XTENSOR_NOALIAS_HPP 
   13#include "../core/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