19 template <
class TPo
int>
22 template <concepts::ScalarType TPo
int>
26 static bool constexpr kIsFloatingPoint = std::is_floating_point_v<Scalar>;
27 static bool constexpr kIsInteger = std::is_integral_v<Scalar>;
29 static int constexpr kRows = 1;
30 static int constexpr kCols = 1;
32 static bool constexpr kHasInfinity =
33 std::numeric_limits<Scalar>::has_infinity;
34 static bool constexpr kHasQuietNan =
35 std::numeric_limits<Scalar>::has_quiet_NaN;
36 static bool constexpr kHasSignalingNan =
37 std::numeric_limits<Scalar>::has_signaling_NaN;
39 static TPoint
lowest() {
return std::numeric_limits<Scalar>::lowest(); };
44 template <concepts::EigenDenseType TPo
int>
45 struct PointTraits<TPoint> {
46 using Scalar =
typename TPoint::Scalar;
47 static int constexpr kRows = TPoint::RowsAtCompileTime;
48 static int constexpr kCols = TPoint::ColsAtCompileTime;
50 static bool constexpr kIsFloatingPoint = std::is_floating_point_v<Scalar>;
51 static bool constexpr kIsInteger = std::is_integral_v<Scalar>;
53 static bool constexpr kHasInfinity =
54 std::numeric_limits<Scalar>::has_infinity;
55 static bool constexpr kHasQuietNan =
56 std::numeric_limits<Scalar>::has_quiet_NaN;
57 static bool constexpr kHasSignalingNan =
58 std::numeric_limits<Scalar>::has_signaling_NaN;
61 return TPoint::Constant(std::numeric_limits<Scalar>::lowest());
70 return TPoint::Constant(std::numeric_limits<Scalar>::epsilon());