3#ifndef pRC_CORE_CONTAINER_ARRAY_STACK_H
4#define pRC_CORE_CONTAINER_ARRAY_STACK_H
15 template<
class T, Size N>
25 static constexpr auto size()
47 return Index(subscripts);
53 template<class R,
Size S>
58 static constexpr auto check([[maybe_unused]]
Index const index)
77 template<pRC::Allocation B, IsConvertible<T> R>
83 template<IsConvertible<T> R>
89 template<IsConvertible<T>... Rs>
90 requires(
sizeof...(Rs) == N)
92 : mData{static_cast<
T>(values)...}
96 template<pRC::Allocation B, IsConvertible<T> R>
100 [
this, &rhs](
auto const i)
102 operator[](
i) = rhs[
i];
107 template<IsConvertible<T> R>
111 [
this, &rhs](
auto const i)
113 operator[](
i) = rhs[
i];
118 constexpr decltype(
auto)
operator()(
Index const subscript) &&
120 return move(*
this)[subscript];
123 constexpr decltype(
auto)
operator()(
Index const subscript)
const &&
125 return move(*
this)[subscript];
128 constexpr decltype(
auto)
operator()(
Index const subscript) &
130 return operator[](subscript);
133 constexpr decltype(
auto)
operator()(
Index const subscript)
const &
135 return operator[](subscript);
140 return move(*
this)[
Index(subscripts)];
143 constexpr decltype(
auto)
operator()(
146 return move(*
this)[
Index(subscripts)];
151 return operator[](
Index(subscripts));
154 constexpr decltype(
auto)
operator()(
157 return operator[](
Index(subscripts));
160 constexpr decltype(
auto)
operator[](
Index const index) &&
163 return move(mData[index]);
166 constexpr decltype(
auto)
operator[](
Index const index)
const &&
169 return move(mData[index]);
184 constexpr auto data() && =
delete;
185 constexpr auto data() const && = delete;
187 constexpr auto data() &
198 template<
Index... Is,
class R>
200 CArray<R, N>
const &other)
201 : mData{other[Is]...}
207 alignas(
alignment<sizeof(
T) * N, alignof(
T)>()) CArray<
T, N> mData;
constexpr auto & operator=(CArray< R, N > const &rhs) &
Definition array_stack.hpp:108
static constexpr auto size()
Definition array_stack.hpp:25
constexpr CommonArray & operator=(CommonArray &&) &=default
static constexpr auto indexToSubscripts(Index const index)
Definition array_stack.hpp:35
constexpr auto data() &&=delete
constexpr CommonArray(CommonArray const &)=default
constexpr CommonArray(CommonArray< B, R, N > const &other)
Definition array_stack.hpp:78
static constexpr auto subscriptsToIndex(Index const subscripts)
Definition array_stack.hpp:40
constexpr CommonArray(CArray< R, N > const &other)
Definition array_stack.hpp:84
constexpr CommonArray(Rs const &...values)
Definition array_stack.hpp:91
constexpr auto data() const &
Definition array_stack.hpp:192
static constexpr auto size(Index const dimension)
Definition array_stack.hpp:30
constexpr auto data() const &&=delete
constexpr CommonArray()=default
constexpr CommonArray & operator=(CommonArray const &) &=default
static constexpr auto subscriptsToIndex(Subscripts< N > const &subscripts)
Definition array_stack.hpp:45
constexpr CommonArray(CommonArray &&)=default
constexpr auto & operator=(CommonArray< B, R, N > const &rhs) &
Definition array_stack.hpp:97
constexpr auto & operator[](Index const index) &
Definition array_stack.hpp:172
constexpr auto & operator[](Index const index) const &
Definition array_stack.hpp:178
Definition declarations.hpp:12
Definition sequence.hpp:29
static constexpr Size Dimension
Definition sequence.hpp:47
static constexpr auto size()
Definition sequence.hpp:69
Definition subscripts.hpp:21
TN::Subscripts S
Definition externs_nonTT.hpp:9
pRC::Float<> T
Definition externs_nonTT.hpp:1
int i
Definition gmock-matchers-comparisons_test.cc:603
static void error(Xs &&...args)
Definition log.hpp:14
Definition cholesky.hpp:10
Size Index
Definition basics.hpp:32
std::size_t Size
Definition basics.hpp:31
static consteval auto alignment()
Definition allocation.hpp:30
static constexpr auto makeSeries()
Definition sequence.hpp:390
CommonArray(T const (&)[N]) -> CommonArray< Allocation::Stack, T, N >
constexpr auto cDebugLevel
Definition config.hpp:48
static constexpr auto range(F &&f, Xs &&...args)
Definition range.hpp:18
Allocation
Definition allocation.hpp:18
#define BEGIN_IGNORE_DIAGNOSTIC_CLANG(warning)
Definition pragma.hpp:45
#define END_IGNORE_DIAGNOSTIC_CLANG
Definition pragma.hpp:46
#define BEGIN_IGNORE_DIAGNOSTIC_GCC(warning)
Definition pragma.hpp:42
#define END_IGNORE_DIAGNOSTIC_GCC
Definition pragma.hpp:43