16 template <
class TScalar,
int kN>
21 ::sophus::concepts::ParamsImpl<TT>
27 { TT::one() } -> ::sophus::concepts::ConvertibleTo<typename TT::Params>;
29 {
TT::zero() } -> ::sophus::concepts::ConvertibleTo<typename TT::Params>;
34 TT::addition(params, params)
35 } -> ::sophus::concepts::ConvertibleTo<typename TT::Params>;
38 TT::multiplication(params, params)
39 } -> ::sophus::concepts::ConvertibleTo<typename TT::Params>;
41 #if __cplusplus >= 202002L
43 TT::template addition<CompatScalarEx<typename TT::Scalar>>(
44 params, compatible_params)
49 TT::template multiplication<CompatScalarEx<typename TT::Scalar>>(
50 params, compatible_params)
57 } -> ::sophus::concepts::ConvertibleTo<typename TT::Params>;
61 } -> ::sophus::concepts::ConvertibleTo<typename TT::Params>;
66 } -> ::sophus::concepts::ConvertibleTo<typename TT::Scalar>;
69 TT::squaredNorm(params)
70 } -> ::sophus::concepts::ConvertibleTo<typename TT::Scalar>;
76 typename TT::Scalar real,
77 typename TT::Imag imag,
80 { r.operator+(r) } -> ::sophus::concepts::ConvertibleTo<TT>;
82 { r.operator*(r) } -> ::sophus::concepts::ConvertibleTo<TT>;
84 { r.conjugate() } -> ::sophus::concepts::ConvertibleTo<TT>;
86 { r.inverse() } -> ::sophus::concepts::ConvertibleTo<TT>;
89 { r.norm() } -> ::sophus::concepts::ConvertibleTo<typename TT::Scalar>;
91 { r.squaredNorm() } -> ::sophus::concepts::ConvertibleTo<typename TT::Scalar>;
93 { r.real() } -> ::sophus::concepts::ConvertibleTo<typename TT::Scalar>;
95 { r.imag() } -> ::sophus::concepts::ConvertibleTo<typename TT::Imag>;