3#ifndef pRC_TENSOR_TRAIN_TENSOR_VIEWS_ASSIGNABLE_H
4#define pRC_TENSOR_TRAIN_TENSOR_VIEWS_ASSIGNABLE_H
23 :
public View<T, Sizes<Ns...>, Sizes<Rs...>, F>
39 template<
class X,
class R = RemoveReference<X>, If<IsTensorish<R>> = 0,
40 If<IsSame<
typename Base::Sizes,
typename R::Sizes>> = 0,
41 If<IsSame<
typename Base::Ranks,
typename R::Ranks>> = 0,
42 If<IsConvertible<
typename R::Type, T>> = 0>
46 [
this, &
rhs](
auto const i)
48 this->self().template
core<i>() =
54 template<
class X,
class R = RemoveReference<X>, If<IsTensorish<R>> = 0,
55 If<IsSame<
typename Base::Sizes,
typename R::Sizes>> = 0,
56 If<Not<IsSame<
typename Base::Ranks,
typename R::Ranks>>> = 0,
57 If<IsSame<
typename Base::Ranks,
58 typename decltype(round<Rs...>(declval<X>()))::Ranks>> = 0,
59 If<IsConvertible<
typename R::Type, T>> = 0>
66 template<
class X, If<IsInvocable<Add, F, X>> = 0>
73 template<
class X, If<IsInvocable<Sub, F, X>> = 0>
80 template<
class X, If<IsInvocable<Mul, X, F>> = 0>
83 this->self() =
eval(forward<X>(
lhs) * this->self());
87 template<
class X, If<IsInvocable<Mul, F, X>> = 0>
90 this->self() =
eval(this->self() * forward<X>(
rhs));
94 template<
class X, If<IsInvocable<Mul, F, X>> = 0>
97 return applyOnTheRight(forward<X>(
rhs));
100 template<
class X, If<IsInvocable<Div, F, X>> = 0>
Definition sequence.hpp:56
constexpr auto operator*=(X &&rhs)
Definition assignable.hpp:95
constexpr Assignable(Assignable const &)=default
constexpr Assignable()=default
constexpr auto applyOnTheRight(X &&rhs)
Definition assignable.hpp:88
constexpr auto & operator=(X &&rhs)
Definition assignable.hpp:60
constexpr auto operator/=(X &&rhs)
Definition assignable.hpp:101
constexpr auto & operator=(Unit<> const)
Definition assignable.hpp:34
constexpr auto applyOnTheLeft(X &&lhs)
Definition assignable.hpp:81
constexpr auto operator-=(X &&rhs)
Definition assignable.hpp:74
constexpr Assignable & operator=(Assignable &&)=delete
constexpr auto operator+=(X &&rhs)
Definition assignable.hpp:67
constexpr auto & operator=(Zero<> const)
Definition assignable.hpp:29
constexpr Assignable(Assignable &&)=default
constexpr Assignable & operator=(Assignable const &)=delete
constexpr auto & operator=(X &&rhs)
Definition assignable.hpp:43
Definition type_traits.hpp:40
typename N::Dimension Dimension
Definition view.hpp:36
Definition type_traits.hpp:37
pRC::Float<> T
Definition externs_nonTT.hpp:1
Definition type_traits.hpp:35
static constexpr X eval(X &&a)
Definition eval.hpp:11
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
std::size_t Size
Definition type_traits.hpp:20
static constexpr auto range(F &&f, Xs &&...args)
Definition range.hpp:16
static constexpr auto round(Complex< T > const &a)
Definition round.hpp:12
Definition type_traits.hpp:265
Definition type_traits.hpp:268