smooth
A C++ library for Lie theory
Loading...
Searching...
No Matches
Manifold Concept Reference

Class-external Manifold interface defined through the traits::man trait class. More...

#include <manifold.hpp>

Concept definition

template<typename M>
concept Manifold =
requires (Eigen::Index dof) {
{traits::man<M>::Dof}->std::convertible_to<int>;
{traits::man<M>::Default(dof)}->std::convertible_to<typename traits::man<M>::PlainObject>;
} &&
requires(const M & m1, const M & m2, const Eigen::Vector<typename traits::man<M>::Scalar, traits::man<M>::Dof> & a) {
{traits::man<M>::dof(m1)}->std::convertible_to<Eigen::Index>;
{traits::man<M>::rplus(m1, a)}->std::convertible_to<typename traits::man<M>::PlainObject>;
{traits::man<M>::rminus(m1, m2)}->std::convertible_to<Eigen::Vector<typename traits::man<M>::Scalar, traits::man<M>::Dof>>;
} && (
!std::is_convertible_v<typename traits::man<M>::Scalar, double> ||
requires (const M & m) {
{traits::man<M>::template cast<double>(m)}->std::convertible_to<typename traits::man<M>::template CastT<double>>;
}
) && (
!std::is_convertible_v<typename traits::man<M>::Scalar, float> ||
requires (const M & m) {
{traits::man<M>::template cast<float>(m)}->std::convertible_to<typename traits::man<M>::template CastT<float>>;
}
) &&
std::is_default_constructible_v<typename traits::man<M>::PlainObject> &&
std::is_copy_constructible_v<typename traits::man<M>::PlainObject> &&
std::is_assignable_v<typename traits::man<M>::PlainObject &, M>
Class-external Manifold interface defined through the traits::man trait class.
Definition manifold.hpp:31
Eigen::Index dof(const M &m)
Manifold degrees of freedom (tangent space dimension)
Definition manifold.hpp:145
typename traits::man< M >::template CastT< NewScalar > CastT
Cast'ed type.
Definition manifold.hpp:100
Trait class for making a class a Manifold instance via specialization.
Definition manifold.hpp:21

Detailed Description

Class-external Manifold interface defined through the traits::man trait class.

Definition at line 31 of file manifold.hpp.