46 template <
typename indices_t,
size_t kSize>
48 static constexpr
size_t kFullSize = detail::kParametersSize<indices_t>;
74 template <
typename parameters_t,
typename covariance_t>
76 const Eigen::MatrixBase<parameters_t>& params,
77 const Eigen::MatrixBase<covariance_t>&
cov)
101 static constexpr
size_t size() {
return kSize; }
107 constexpr std::array<indices_t, kSize>
indices()
const {
109 std::array<indices_t, kSize> inds{};
110 for (
size_t i = 0;
i < kSize;
i++) {
111 inds[
i] =
static_cast<indices_t
>(subInds[
i]);
124 return m_subspace.template projector<Scalar>();
134 return m_subspace.template expander<Scalar>();
188 template <
typename parameters_t,
typename covariance_t,
typename indices_t,
189 typename... tail_indices_t>
191 const Eigen::MatrixBase<parameters_t>& params,
192 const Eigen::MatrixBase<covariance_t>&
cov,
193 indices_t
index0, tail_indices_t... tailIndices)
194 ->
Measurement<indices_t, 1
u +
sizeof...(tail_indices_t)> {
195 using IndexContainer =
std::array<indices_t, 1
u +
sizeof...(tail_indices_t)>;
214 template <
typename indices_t,
size_t kN,
size_t... kSizes>
215 struct VariantMeasurementGenerator
216 : VariantMeasurementGenerator<indices_t, kN - 1u, kN, kSizes...> {};
217 template <
typename indices_t,
size_t... kSizes>
218 struct VariantMeasurementGenerator<indices_t, 0
u, kSizes...> {
219 using Type = std::variant<Measurement<indices_t, kSizes>...>;
228 template <
typename indices_t>
230 indices_t, detail::kParametersSize<indices_t>>::Type;
240 template <
typename indices_t>
243 return std::visit([&](
const auto&
m) {
return (os <<
m); }, vm);