# xsemantic_base

Defined in `xtensor/core/xsemantic.hpp`

template<class D>
class xsemantic_base : public select_expression_base_t<D>

  Base interface for assignable xexpressions.

  The xsemantic_base class defines the interface for assignable xexpressions.

  Template Parameters:

    D – The derived type, i.e. the inheriting class for which xsemantic_base provides the interface.

  Subclassed by xt::xchunked_semantic< self_type >, xt::xcontainer_semantic< self_type >, xt::xview_semantic< self_type >, xt::xview_semantic< xmasked_view< CTD, CTM > >, xt::xchunked_semantic< D >, xt::xcontainer_semantic< D >, xt::xview_semantic< D >

  Computed assignement

  template<class E>
  inline disable_xexpression<E, derived_type&> operator+=(const E &e)

    Adds the scalar `e` to `*this`.

    Parameters:

      e – the scalar to add.

    Returns:

      a reference to `*this`.

  template<class E>
  inline disable_xexpression<E, derived_type&> operator-=(const E &e)

    Subtracts the scalar `e` from `*this`.

    Parameters:

      e – the scalar to subtract.

    Returns:

      a reference to `*this`.

  template<class E>
  inline disable_xexpression<E, derived_type&> operator*=(const E &e)

    Multiplies `*this` with the scalar `e`.

    Parameters:

      e – the scalar involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline disable_xexpression<E, derived_type&> operator/=(const E &e)

    Divides `*this` by the scalar `e`.

    Parameters:

      e – the scalar involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline disable_xexpression<E, derived_type&> operator%=(const E &e)

    Computes the remainder of `*this` after division by the scalar `e`.

    Parameters:

      e – the scalar involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline disable_xexpression<E, derived_type&> operator&=(const E &e)

    Computes the bitwise and of `*this` and the scalar `e` and assigns it to `*this`.

    Parameters:

      e – the scalar involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline disable_xexpression<E, derived_type&> operator|=(const E &e)

    Computes the bitwise or of `*this` and the scalar `e` and assigns it to `*this`.

    Parameters:

      e – the scalar involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline disable_xexpression<E, derived_type&> operator^=(const E &e)

    Computes the bitwise xor of `*this` and the scalar `e` and assigns it to `*this`.

    Parameters:

      e – the scalar involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator+=(const xexpression<E> &e)

    Adds the xexpression `e` to `*this`.

    Parameters:

      e – the xexpression to add.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator-=(const xexpression<E> &e)

    Subtracts the xexpression `e` from `*this`.

    Parameters:

      e – the xexpression to subtract.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator*=(const xexpression<E> &e)

    Multiplies `*this` with the xexpression `e`.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator/=(const xexpression<E> &e)

    Divides `*this` by the xexpression `e`.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator%=(const xexpression<E> &e)

    Computes the remainder of `*this` after division by the xexpression `e`.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator&=(const xexpression<E> &e)

    Computes the bitwise and of `*this` and the xexpression `e` and assigns it to `*this`.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator|=(const xexpression<E> &e)

    Computes the bitwise or of `*this` and the xexpression `e` and assigns it to `*this`.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &operator^=(const xexpression<E> &e)

    Computes the bitwise xor of `*this` and the xexpression `e` and assigns it to `*this`.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  Assign functions

  template<class E>
  inline derived_type &assign(const xexpression<E> &e)

    Assigns the xexpression `e` to `*this`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression to assign.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &plus_assign(const xexpression<E> &e)

    Adds the xexpression `e` to `*this`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression to add.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &minus_assign(const xexpression<E> &e)

    Subtracts the xexpression `e` to `*this`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression to subtract.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &multiplies_assign(const xexpression<E> &e)

    Multiplies `*this` with the xexpression `e`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &divides_assign(const xexpression<E> &e)

    Divides `*this` by the xexpression `e`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &modulus_assign(const xexpression<E> &e)

    Computes the remainder of `*this` after division by the xexpression `e`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression involved in the operation.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &bit_and_assign(const xexpression<E> &e)

    Computes the bitwise and of `e` to `*this`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression to add.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &bit_or_assign(const xexpression<E> &e)

    Computes the bitwise or of `e` to `*this`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression to add.

    Returns:

      a reference to `*this`.

  template<class E>
  inline derived_type &bit_xor_assign(const xexpression<E> &e)

    Computes the bitwise xor of `e` to `*this`.

    Ensures no temporary will be used to perform the assignment.

    Parameters:

      e – the xexpression to add.

    Returns:

      a reference to `*this`.