22struct man<std::variant<Ms...>>
25 using Scalar = std::common_type_t<typename traits::man<Ms>::Scalar...>;
27 template<
typename NewScalar>
30 static constexpr int Dof = -1;
35 return std::visit(visitor, m);
43 template<
typename NewScalar>
49 return std::visit(visitor, m);
52 template<
typename Derived>
56 return std::visit(visitor, m);
61 const auto visitor = [&m2]<
Manifold Mi>(
const Mi & x) -> Eigen::VectorX<Scalar> {
64 return std::visit(visitor, m1);
Class-external Manifold interface defined through the traits::man trait class.
PlainObject< M > Default()
Default-initialized Manifold with static dof.
typename traits::man< M >::Scalar Scalar
Manifold scalar type.
Eigen::Index dof(const M &m)
Manifold degrees of freedom (tangent space dimension)
Tangent< M > rminus(const M &g1, const Mo &g2)
Manifold right-minus.
PlainObject< M > rplus(const M &m, const Eigen::MatrixBase< Derived > &a)
Manifold right-plus.
typename traits::man< M >::template CastT< NewScalar > CastT
Cast'ed type.
CastT< NewScalar, M > cast(const M &m)
Cast to different scalar type.
typename traits::man< M >::PlainObject PlainObject
Manifold default type.
Trait class for making a class a Manifold instance via specialization.