18 { TT::oplus(params, tangent) } -> ConvertibleTo<typename TT::Params>;
20 { TT::ominus(params, params) } -> ConvertibleTo<typename TT::Tangent>;
27 { m.oplus(tangent) } -> ConvertibleTo<TT>;
29 { m.ominus(m) } -> ConvertibleTo<typename TT::Tangent>;
33 concept
Manifold = Params<TT> && Tangent<TT> && BaseManifold<TT> &&
34 requires(std::vector<TT> points) {
35 {
TT::average(points) } -> ConvertibleTo<std::optional<TT>>;