|
@@ -78,7 +78,7 @@ constexpr bool inside(dim_t i, dim_t b) { return 0<=i && i<b; }
|
|
constexpr struct Len
|
|
constexpr struct Len
|
|
{
|
|
{
|
|
consteval static rank_t rank() { return 0; }
|
|
consteval static rank_t rank() { return 0; }
|
|
- [[noreturn]] consteval static void len_outside_subscript_context() { abort(); }
|
|
|
|
|
|
+ [[noreturn]] consteval static void len_outside_subscript_context() { std::abort(); }
|
|
consteval static dim_t len_s(int k) { len_outside_subscript_context(); }
|
|
consteval static dim_t len_s(int k) { len_outside_subscript_context(); }
|
|
consteval static dim_t len(int k) { len_outside_subscript_context(); }
|
|
consteval static dim_t len(int k) { len_outside_subscript_context(); }
|
|
consteval static dim_t step(int k) { len_outside_subscript_context(); }
|
|
consteval static dim_t step(int k) { len_outside_subscript_context(); }
|
|
@@ -102,8 +102,8 @@ struct Scalar
|
|
C c;
|
|
C c;
|
|
RA_ASSIGNOPS_DEFAULT_SET
|
|
RA_ASSIGNOPS_DEFAULT_SET
|
|
consteval static rank_t rank() { return 0; }
|
|
consteval static rank_t rank() { return 0; }
|
|
- constexpr static dim_t len_s(int k) { std::abort(); }
|
|
|
|
- constexpr static dim_t len(int k) { std::abort(); }
|
|
|
|
|
|
+ constexpr static dim_t len_s(int k) { std::abort(); } // FIXME consteval cf Match::check_s
|
|
|
|
+ constexpr static dim_t len(int k) { std::abort(); } // FIXME idem
|
|
constexpr static dim_t step(int k) { return 0; }
|
|
constexpr static dim_t step(int k) { return 0; }
|
|
constexpr static void adv(rank_t k, dim_t d) {}
|
|
constexpr static void adv(rank_t k, dim_t d) {}
|
|
constexpr static bool keep_step(dim_t st, int z, int j) { return true; }
|
|
constexpr static bool keep_step(dim_t st, int z, int j) { return true; }
|
|
@@ -111,7 +111,7 @@ struct Scalar
|
|
constexpr C & operator*() requires (std::is_lvalue_reference_v<C>) { return c; } // [ra37]
|
|
constexpr C & operator*() requires (std::is_lvalue_reference_v<C>) { return c; } // [ra37]
|
|
constexpr C const & operator*() requires (!std::is_lvalue_reference_v<C>) { return c; }
|
|
constexpr C const & operator*() requires (!std::is_lvalue_reference_v<C>) { return c; }
|
|
constexpr C const & operator*() const { return c; } // [ra39]
|
|
constexpr C const & operator*() const { return c; } // [ra39]
|
|
- constexpr static int save() { return 0; }
|
|
|
|
|
|
+ consteval static int save() { return 0; }
|
|
constexpr static void load(int) {}
|
|
constexpr static void load(int) {}
|
|
constexpr static void mov(dim_t d) {}
|
|
constexpr static void mov(dim_t d) {}
|
|
};
|
|
};
|
|
@@ -174,7 +174,7 @@ struct Ptr
|
|
template <class X> using seq_arg = std::conditional_t<is_constant<std::decay_t<X>> || is_scalar<std::decay_t<X>>, std::decay_t<X>, X>;
|
|
template <class X> using seq_arg = std::conditional_t<is_constant<std::decay_t<X>> || is_scalar<std::decay_t<X>>, std::decay_t<X>, X>;
|
|
|
|
|
|
template <class S>
|
|
template <class S>
|
|
-constexpr auto
|
|
|
|
|
|
+consteval auto
|
|
thestep()
|
|
thestep()
|
|
{
|
|
{
|
|
if constexpr (std::is_integral_v<S>) {
|
|
if constexpr (std::is_integral_v<S>) {
|