# xsemantic_base

Defined in `xtensor/xsemantic.hpp`

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

  Base interface for assignable xexpressions.

  The xsemantic_base class defines the interface for assignable xexpressions.

  tparam D

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

  Subclassed by xt::xchunked_semantic< xchunked_array< chunk_storage > >, xt::xcontainer_semantic< xtensor_container< EC, N, L, Tag > >, xt::xcontainer_semantic< xoptional_assembly< VE, FE > >, xt::xcontainer_semantic< xarray_adaptor< EC, L, SC, Tag > >, xt::xcontainer_semantic< xarray_container< EC, L, SC, Tag > >, xt::xcontainer_semantic< xfunctor_adaptor< F, CT > >, xt::xcontainer_semantic< xoptional_assembly_adaptor< VEC, FEC > >, xt::xcontainer_semantic< xfixed_container< ET, S, L, SH, Tag > >, xt::xcontainer_semantic< xtensor_adaptor< EC, N, L, Tag > >, xt::xcontainer_semantic< xfixed_adaptor< EC, S, L, SH, Tag > >, xt::xview_semantic< xindex_view< CT, I > >, xt::xview_semantic< xstrided_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >, xt::xview_semantic< xdynamic_view< CT, S, layout_type::dynamic, detail::flat_storage_getter< CT, ::xt::layout_type::row_major > > >, xt::xview_semantic< xmasked_view< CTD, CTM > >, xt::xview_semantic< xtensor_view< EC, N, L, Tag > >, xt::xview_semantic< xfunctor_view< F, CT > >, xt::xview_semantic< xview< CT, S… > >, xt::xchunked_semantic< D >, xt::xcontainer_semantic< D >, xt::xview_semantic< D >

  Computed assignement

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

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

    Parameters

      e – the scalar to add.

    Returns

      a reference to `*this`.

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

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

    Parameters

      e – the scalar to subtract.

    Returns

      a reference to `*this`.

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

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

    Parameters

      e – the scalar involved in the operation.

    Returns

      a reference to `*this`.

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

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

    Parameters

      e – the scalar involved in the operation.

    Returns

      a reference to `*this`.

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

    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 auto operator&=(const E &e) -> disable_xexpression<E, derived_type&>

    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 auto operator|=(const E &e) -> disable_xexpression<E, derived_type&>

    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 auto operator^=(const E &e) -> disable_xexpression<E, derived_type&>

    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 auto operator+=(const xexpression<E> &e) -> derived_type&

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

    Parameters

      e – the xexpression to add.

    Returns

      a reference to `*this`.

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

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

    Parameters

      e – the xexpression to subtract.

    Returns

      a reference to `*this`.

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

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

    Parameters

      e – the xexpression involved in the operation.

    Returns

      a reference to `*this`.

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

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

    Parameters

      e – the xexpression involved in the operation.

    Returns

      a reference to `*this`.

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

    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 auto operator&=(const xexpression<E> &e) -> derived_type&

    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 auto operator|=(const xexpression<E> &e) -> derived_type&

    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 auto operator^=(const xexpression<E> &e) -> derived_type&

    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 auto assign(const xexpression<E> &e) -> derived_type&

    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 auto plus_assign(const xexpression<E> &e) -> derived_type&

    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 auto minus_assign(const xexpression<E> &e) -> derived_type&

    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 auto multiplies_assign(const xexpression<E> &e) -> derived_type&

    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 auto divides_assign(const xexpression<E> &e) -> derived_type&

    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 auto modulus_assign(const xexpression<E> &e) -> derived_type&

    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 auto bit_and_assign(const xexpression<E> &e) -> derived_type&

    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 auto bit_or_assign(const xexpression<E> &e) -> derived_type&

    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 auto bit_xor_assign(const xexpression<E> &e) -> derived_type&

    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`.