17template <affine::AffineMapLike Map,
typename... Cs>
20 using MatT = affine::affine_mat_t<Map>;
21 using T = linalg::matrix_scalar_t<MatT>;
24 static constexpr std::size_t
M = linalg::mat_rows_v<MatT>;
25 static constexpr std::size_t
N = linalg::mat_cols_v<MatT>;
33 constexpr explicit ConeBlock(
const Map& map_in, Cs... cs)
34 :
map(map_in),
cones(std::forward<Cs>(cs)...) {}
42 constexpr explicit ConeBlock(
const Map& map_in, std::tuple<Cs...> cs)
43 :
map(map_in),
cones(std::move(cs)) {}
52 std::size_t n_dims = 0;
53 auto perform_check = [&](
const auto& arg) {
56 std::same_as<ArgT, T>,
57 "Cone scalar type is mismatched with cone block scalar type");
61 std::apply([&](
const auto&... args) { (perform_check(args), ...); },
cones);
constexpr std::size_t cone_dim_t
helper to get N from cone
typename cone_traits< linalg::remove_cvref_t< Cone > >::T cone_scalar_t
alias for scalar type in cone
static constexpr std::size_t N
linalg::matrix_scalar_t< MatT > T
affine::affine_mat_t< Map > MatT
alias to extract scalar type from space
constexpr ConeBlock(const Map &map_in, Cs... cs)
CTOR for cone block.
constexpr bool validate() const
validate cone block
static constexpr std::size_t M
alias to extract codom & dom of affine map
Map map
member vars for cone block
constexpr ConeBlock(const Map &map_in, std::tuple< Cs... > cs)
CTOR for cone block.
std::tuple< Cs... > cones
tuple of cones aligned with map