3#ifndef pRC_CORE_TENSOR_VIEWS_TENSOR_PRODUCT_H
4#define pRC_CORE_TENSOR_VIEWS_TENSOR_PRODUCT_H
11 template<
class T,
class N,
class VA,
class VB>
12 requires IsTensorView<VA> && IsTensorView<VB>
19 template<
class XA,
class XB>
28 template<IsConvertible<Index>... Is>
29 requires(
sizeof...(Is) == Base::Dimension)
30 constexpr decltype(
auto)
operator()(Is
const... indices)
32 return this->call(indices...);
35 template<IsConvertible<Index>... Is>
36 requires(
sizeof...(Is) == Base::Dimension)
37 constexpr decltype(
auto)
operator()(Is
const... indices)
const
39 return this->call(indices...);
42 constexpr decltype(
auto)
operator()(
43 typename Base::Subscripts
const &subscripts)
46 [
this, &subscripts](
auto const... seq) ->
decltype(
auto)
48 return mA(subscripts[seq]...);
51 [
this, &subscripts](
auto const... seq) ->
decltype(
auto)
53 return mB(subscripts[seq]...);
57 constexpr decltype(
auto)
operator()(
58 typename Base::Subscripts
const &subscripts)
const
61 [
this, &subscripts](
auto const... seq) ->
decltype(
auto)
63 return mA(subscripts[seq]...);
66 [
this, &subscripts](
auto const... seq) ->
decltype(
auto)
68 return mB(subscripts[seq]...);
72 constexpr decltype(
auto)
operator[](
Index const index) =
delete;
73 constexpr decltype(
auto)
operator[](
Index const index)
const =
delete;
Definition tensor_product.hpp:14
TensorProduct(XA &&a, XB &&b)
Definition tensor_product.hpp:22
Definition declarations.hpp:20
Definition concepts.hpp:28
Definition declarations.hpp:18
Size Index
Definition basics.hpp:32
static constexpr auto makeSeries()
Definition sequence.hpp:390
static constexpr auto makeRange()
Definition sequence.hpp:421
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:383