3#ifndef pRC_CORE_CONTAINER_ARRAY_H
4#define pRC_CORE_CONTAINER_ARRAY_H
28 template<
class E =
typename Sizes::IsLinearizable, If<E> = 0>
29 static constexpr auto size()
83 : mData(move(
other.mData))
87 template<pRC::Allocation B,
class R, If<IsConvertible<R, T>> = 0>
95 return operator=<
A,
T>(
rhs);
103 [
this, &
rhs](
auto const i)
105 (*this)[
i] = move(
rhs[
i]);
110 mData = move(
rhs.mData);
115 template<pRC::Allocation B,
class R, If<IsConvertible<R, T>> = 0>
119 [
this, &
rhs](
auto const i)
158 constexpr decltype(
auto)
operator()(
164 auto const...
seq) ->
decltype(
auto)
171 constexpr decltype(
auto)
operator()(
177 auto const...
seq) ->
decltype(
auto)
184 constexpr decltype(
auto)
operator()(
190 auto const...
seq) ->
decltype(
auto)
197 constexpr decltype(
auto)
operator()(
203 auto const...
seq) ->
decltype(
auto)
210 constexpr decltype(
auto)
operator[](
Index const index) &&
214 *
reinterpret_cast<StackArray<
T, size()
> *>(data()))[index];
217 constexpr decltype(
auto)
operator[](
Index const index)
const &&
220 return move(*
reinterpret_cast<StackArray<
T, size()
> const *>(
224 constexpr decltype(
auto)
operator[](
Index const index) &
227 return (*
reinterpret_cast<StackArray<
T, size()
> *>(data()))[index];
230 constexpr decltype(
auto)
operator[](
Index const index)
const &
233 return (*
reinterpret_cast<StackArray<
T, size()
> const *>(
237 constexpr auto data() && =
delete;
251 static constexpr auto checkFlattenable()
261 "Unable to flatten multi-dimensional array. Must be some "
262 "weird underlying type.");
constexpr decltype(auto) operator()(Index const subscript, Is const ... subscripts) &
Definition array.hpp:144
constexpr CommonArray(CommonArray const &other)
Definition array.hpp:68
constexpr auto & operator=(CommonArray< B, R, N, Ns... > const &rhs) &
Definition array.hpp:116
Constant< pRC::Allocation, A > Allocation
Definition array.hpp:23
static constexpr auto subscriptsToIndex(Subscripts< N, Ns... > const &subscripts)
Definition array.hpp:58
constexpr decltype(auto) operator()(Index const subscript, Is const ... subscripts) const &&
Definition array.hpp:136
static constexpr auto size()
Definition array.hpp:29
constexpr CommonArray(HeapArray< T, N, Ns... > &&other)
Definition array.hpp:82
constexpr CommonArray & operator=(CommonArray &&rhs) &
Definition array.hpp:98
constexpr auto data() const &&=delete
constexpr decltype(auto) operator()(Index const subscript, Is const ... subscripts) &&
Definition array.hpp:128
constexpr CommonArray & operator=(CommonArray const &rhs) &
Definition array.hpp:93
static constexpr auto subscriptsToIndex(Is const ... subscripts)
Definition array.hpp:51
typename Sizes::Dimension Dimension
Definition array.hpp:26
constexpr CommonArray(CommonArray< B, R, N, Ns... > const &other)
Definition array.hpp:88
constexpr decltype(auto) operator()(Index const subscript, Is const ... subscripts) const &
Definition array.hpp:152
constexpr auto data() &&=delete
constexpr auto data() const &
Definition array.hpp:245
constexpr CommonArray()=default
static constexpr auto size(Index const dimension)
Definition array.hpp:34
constexpr CommonArray(StackArray< T, N, Ns... > &&other)
Definition array.hpp:75
static constexpr auto indexToSubscripts(Index const index)
Definition array.hpp:41
Definition type_traits.hpp:49
Definition sequence.hpp:56
static constexpr auto size()
Definition sequence.hpp:88
Constant< Size, sizeof...(Ns)> Dimension
Definition sequence.hpp:74
Constant< Bool, linearizable()> IsLinearizable
Definition sequence.hpp:75
Definition subscripts.hpp:20
pRC::Float<> T
Definition externs_nonTT.hpp:1
Definition cholesky.hpp:18
std::is_standard_layout< T > IsStandardLayout
Definition type_traits.hpp:155
std::is_constructible< T, Args... > IsConstructible
Definition type_traits.hpp:143
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
Size Index
Definition type_traits.hpp:21
std::size_t Size
Definition type_traits.hpp:20
std::enable_if_t< B{}, int > If
Definition type_traits.hpp:68
Constant< Bool, B > IsSatisfied
Definition type_traits.hpp:71
static constexpr auto makeSeries()
Definition sequence.hpp:351
CommonArray(T const (&)[N]) -> CommonArray< Allocation::Stack, T, N >
CommonArray< Allocation::Stack, T, Ns... > StackArray
Definition type_traits.hpp:52
std::integral_constant< T, V > Constant
Definition type_traits.hpp:34
Allocation
Definition allocation.hpp:19
std::conjunction< Bs... > All
Definition type_traits.hpp:77
static constexpr decltype(auto) expand(Sequence< T, Seq... > const, F &&f, Xs &&...args)
Definition sequence.hpp:344
#define BEGIN_IGNORE_DIAGNOSTIC_GCC(warning)
Definition pragma.hpp:42
#define END_IGNORE_DIAGNOSTIC_GCC
Definition pragma.hpp:43