diff --git a/gtsam/base/concepts.h b/gtsam/base/concepts.h index e246a0a6c..626542fef 100644 --- a/gtsam/base/concepts.h +++ b/gtsam/base/concepts.h @@ -117,10 +117,12 @@ struct Manifold { /// A helper that implements the traits interface for GTSAM lie groups. /// To use this for your gtsam type, define: /// template<> struct traits : public LieGroup { }; -template +template struct LieGroup { // Typedefs required by all manifold types. typedef lie_group_tag structure_category; + typedef _group_flavor group_flavor; + enum { dimension = ManifoldType::dimension }; typedef Eigen::Matrix TangentVector; typedef OptionalJacobian ChartJacobian; diff --git a/gtsam/geometry/Pose2.h b/gtsam/geometry/Pose2.h index 7dc1add70..0125e642a 100644 --- a/gtsam/geometry/Pose2.h +++ b/gtsam/geometry/Pose2.h @@ -304,7 +304,7 @@ typedef std::pair Point2Pair; GTSAM_EXPORT boost::optional align(const std::vector& pairs); template<> -struct traits_x : public internal::LieGroup {}; +struct traits_x : public internal::LieGroup {}; } // namespace gtsam diff --git a/gtsam/geometry/Pose3.h b/gtsam/geometry/Pose3.h index 853d41643..2189f5030 100644 --- a/gtsam/geometry/Pose3.h +++ b/gtsam/geometry/Pose3.h @@ -363,6 +363,6 @@ typedef std::pair Point3Pair; GTSAM_EXPORT boost::optional align(const std::vector& pairs); template<> -struct traits_x : public internal::LieGroup {}; +struct traits_x : public internal::LieGroup {}; } // namespace gtsam diff --git a/gtsam/geometry/Rot2.h b/gtsam/geometry/Rot2.h index 4ede4326f..aeaf88146 100644 --- a/gtsam/geometry/Rot2.h +++ b/gtsam/geometry/Rot2.h @@ -242,6 +242,6 @@ namespace gtsam { }; template<> - struct traits_x : public internal::LieGroup {}; + struct traits_x : public internal::LieGroup {}; } // gtsam diff --git a/gtsam/geometry/Rot3.h b/gtsam/geometry/Rot3.h index b043527d6..68095810c 100644 --- a/gtsam/geometry/Rot3.h +++ b/gtsam/geometry/Rot3.h @@ -473,6 +473,6 @@ namespace gtsam { GTSAM_EXPORT std::pair RQ(const Matrix3& A); template<> - struct traits_x : public internal::LieGroup {}; + struct traits_x : public internal::LieGroup {}; }