3#ifndef pRC_CORE_TENSOR_VIEWS_ASSIGNABLE_H
4#define pRC_CORE_TENSOR_VIEWS_ASSIGNABLE_H
19 template<
class T,
class N,
class F>
43 constexpr auto &
operator=(X &&
value)
45 (*this)() = forward<X>(
value);
49 template<
class X, IsTensorish R = RemoveReference<X>>
57 [
this, &rhs](
auto const i)
59 (*this)[
i] = forward<X>(rhs)[
i];
65 [
this, &rhs](
auto const... indices)
67 (*this)(indices...) = forward<X>(rhs)(indices...);
77 this->self() = this->self() + forward<X>(rhs);
85 this->self() = this->self() - forward<X>(rhs);
97 this->self() = forward<X>(lhs) * this->self();
103 if constexpr(U::Dimension == 0)
105 this->self() =
eval(forward<X>(lhs)) * this->self();
110 this->self() =
eval(forward<X>(lhs) * this->self());
122 this->self() = this->self() * forward<X>(rhs);
128 if constexpr(U::Dimension == 0)
130 this->self() = this->self() *
eval(forward<X>(rhs));
135 this->self() =
eval(this->self() * forward<X>(rhs));
150 this->self() = this->self() / forward<X>(rhs);
Definition assignable.hpp:21
constexpr auto operator/=(X &&rhs)
Definition assignable.hpp:148
constexpr auto applyOnTheLeft(X &&lhs)
Definition assignable.hpp:91
constexpr Assignable()=default
constexpr Assignable(Assignable const &)=default
constexpr auto applyOnTheRight(X &&rhs)
Definition assignable.hpp:116
constexpr Assignable(Assignable &&)=default
constexpr auto & operator=(Zero<> const)
Definition assignable.hpp:26
constexpr auto & operator=(Identity<> const)
Definition assignable.hpp:36
constexpr auto operator+=(X &&rhs)
Definition assignable.hpp:75
constexpr Assignable & operator=(Assignable &&)=delete
constexpr auto & operator=(X &&rhs)
Definition assignable.hpp:52
constexpr auto operator*=(X &&rhs)
Definition assignable.hpp:141
constexpr auto & operator=(Unit<> const)
Definition assignable.hpp:31
constexpr auto operator-=(X &&rhs)
Definition assignable.hpp:83
constexpr Assignable & operator=(Assignable const &)=delete
Definition declarations.hpp:20
Definition concepts.hpp:40
Definition concepts.hpp:31
Definition concepts.hpp:28
Definition subscript.hpp:21
Definition declarations.hpp:45
int value
Definition gmock-actions_test.cc:1714
int i
Definition gmock-matchers-comparisons_test.cc:603
Definition declarations.hpp:18
static constexpr auto unit()
Definition unit.hpp:13
std::remove_reference_t< T > RemoveReference
Definition basics.hpp:41
static constexpr auto range(F &&f, Xs &&...args)
Definition range.hpp:18
static constexpr auto identity()
Definition identity.hpp:13
static constexpr auto zero()
Definition zero.hpp:12
static constexpr decltype(auto) eval(X &&a)
Definition eval.hpp:12
Definition identity.hpp:11