21 Eigen::Vector<typename TT::Scalar, TT::kNumParams>> &&
24 { TT::areParamsValid(params) } -> ConvertibleTo<sophus::Expected<Success>>;
26 { TT::paramsExamples() } -> ConvertibleTo<std::vector<typename TT::Params>>;
29 TT::invalidParamsExamples()
30 } -> ConvertibleTo<std::vector<typename TT::Params>>;
36 Eigen::Vector<typename TT::Scalar, TT::kDof>> && requires() {
37 { TT::tangentExamples() } -> ConvertibleTo<std::vector<typename TT::Tangent>>;
43 Eigen::Vector<typename TT::Scalar, TT::kNumParams>> &&
46 { TT::fromParams(params) } -> ConvertibleTo<TT>;
48 {m.setParams(params)};
50 { m.params() } -> ConvertibleTo<typename TT::Params>;
52 { m.ptr() } -> ConvertibleTo<typename TT::Scalar const *>;
54 { m.unsafeMutPtr() } -> ConvertibleTo<typename TT::Scalar *>;
76 struct NumTraits<
sophus::concepts::CompatScalarEx<TT>> {
82 static bool constexpr IsComplex =
false;
83 static bool constexpr IsInteger =
false;
90 return Real(std::numeric_limits<TT>::epsilon());
93 inline static int digits10() {
return NumTraits<TT>::digits10(); }
103 template <
class BinaryOp,
class TT>
104 struct ScalarBinaryOpTraits<
105 sophus::concepts::CompatScalarEx<TT>,
110 template <
class BinaryOp,
class TT>
111 struct ScalarBinaryOpTraits<
113 sophus::concepts::CompatScalarEx<TT>,