// // macro.h // matrix // // Created by Sam Jaffe on 2/17/24. // Copyright © 2024 Sam Jaffe. All rights reserved. // #include #define MATRIX_DISABLE_IF_MATRIX(_type, t, r, c) \ std::enable_if_t, matrix> #define MATRIX_FOR_EACH_RANGE(i, i_max, j, j_max) \ for (size_t i = 0; i < i_max; ++i) \ for (size_t j = 0; j < j_max; ++j) #define MATRIX_FOR_EACH(i, j) MATRIX_FOR_EACH_RANGE(i, R, j, C) #define MATRIX_CTOR_N_ARGS(N_IN) \ DEFER_RESOLUTION matrix(REPEAT(N_IN, ARGN, COMMA, vector::vector), \ DEFERRED_ENABLE_IF_T(N_IN == R, bool) = true) \ : matrix(std::array{REPEAT(N_IN, ARGN, COMMA)}) #define MATRIX_CTOR_DEDUCTION(N_IN) \ template \ matrix(REPEAT(N_IN, ARGN, COMMA, vector::vector))->matrix