diff --git a/gtsam/base/Group.h b/gtsam/base/Group.h index baacd85c85..3430a06ae5 100644 --- a/gtsam/base/Group.h +++ b/gtsam/base/Group.h @@ -52,7 +52,7 @@ class IsGroup { typedef typename traits::group_flavor flavor_tag; //typedef typename traits::identity::value_type identity_value_type; - GTSAM_CONCEPT_USAGE(IsGroup) { + BOOST_CONCEPT_USAGE(IsGroup) { static_assert( (std::is_base_of::value), "This type's structure_category trait does not assert it as a group (or derived)"); diff --git a/gtsam/base/Lie.h b/gtsam/base/Lie.h index b8460efb23..ce021e10eb 100644 --- a/gtsam/base/Lie.h +++ b/gtsam/base/Lie.h @@ -264,7 +264,7 @@ class IsLieGroup: public IsGroup, public IsManifold { typedef typename traits::TangentVector TangentVector; typedef typename traits::ChartJacobian ChartJacobian; - GTSAM_CONCEPT_USAGE(IsLieGroup) { + BOOST_CONCEPT_USAGE(IsLieGroup) { static_assert( (std::is_base_of::value), "This type's trait does not assert it is a Lie group (or derived)"); diff --git a/gtsam/base/Manifold.h b/gtsam/base/Manifold.h index 377e36f07b..815c8b2880 100644 --- a/gtsam/base/Manifold.h +++ b/gtsam/base/Manifold.h @@ -61,7 +61,7 @@ struct HasManifoldPrereqs { Eigen::Matrix v; OptionalJacobian Hp, Hq, Hv; - GTSAM_CONCEPT_USAGE(HasManifoldPrereqs) { + BOOST_CONCEPT_USAGE(HasManifoldPrereqs) { v = p.localCoordinates(q); q = p.retract(v); } @@ -139,7 +139,7 @@ class IsManifold { typedef typename traits::ManifoldType ManifoldType; typedef typename traits::TangentVector TangentVector; - GTSAM_CONCEPT_USAGE(IsManifold) { + BOOST_CONCEPT_USAGE(IsManifold) { static_assert( (std::is_base_of::value), "This type's structure_category trait does not assert it as a manifold (or derived)"); diff --git a/gtsam/base/Testable.h b/gtsam/base/Testable.h index 412b69f7ea..8eb6326c05 100644 --- a/gtsam/base/Testable.h +++ b/gtsam/base/Testable.h @@ -61,7 +61,7 @@ namespace gtsam { bool r1,r2; public: - GTSAM_CONCEPT_USAGE(IsTestable) { + BOOST_CONCEPT_USAGE(IsTestable) { // check print function, with optional string traits::Print(t, std::string()); traits::Print(t); @@ -134,7 +134,7 @@ namespace gtsam { template struct HasTestablePrereqs { - GTSAM_CONCEPT_USAGE(HasTestablePrereqs) { + BOOST_CONCEPT_USAGE(HasTestablePrereqs) { t->print(str); b = t->equals(*s,tol); } diff --git a/gtsam/base/VectorSpace.h b/gtsam/base/VectorSpace.h index 0d13ecfb0d..f4e3d30204 100644 --- a/gtsam/base/VectorSpace.h +++ b/gtsam/base/VectorSpace.h @@ -168,7 +168,7 @@ struct HasVectorSpacePrereqs { Class p, q; Vector v; - GTSAM_CONCEPT_USAGE(HasVectorSpacePrereqs) { + BOOST_CONCEPT_USAGE(HasVectorSpacePrereqs) { p = Class::Identity(); // identity q = p + p; // addition q = p - p; // subtraction @@ -472,7 +472,7 @@ class IsVectorSpace: public IsLieGroup { typedef typename traits::structure_category structure_category_tag; - GTSAM_CONCEPT_USAGE(IsVectorSpace) { + BOOST_CONCEPT_USAGE(IsVectorSpace) { static_assert( (std::is_base_of::value), "This type's trait does not assert it as a vector space (or derived)"); diff --git a/gtsam/base/concepts.h b/gtsam/base/concepts.h index fe73e3c666..242e681da1 100644 --- a/gtsam/base/concepts.h +++ b/gtsam/base/concepts.h @@ -10,16 +10,18 @@ #ifdef GTSAM_USE_BOOST_FEATURES #include -#define GTSAM_CONCEPT_USAGE(concept) BOOST_CONCEPT_USAGE((concept)) +#include +#include +#include #define GTSAM_CONCEPT_ASSERT(concept) BOOST_CONCEPT_ASSERT((concept)) #define GTSAM_CONCEPT_ASSERT1(concept) BOOST_CONCEPT_ASSERT((concept)) #define GTSAM_CONCEPT_ASSERT2(concept) BOOST_CONCEPT_ASSERT((concept)) #define GTSAM_CONCEPT_ASSERT3(concept) BOOST_CONCEPT_ASSERT((concept)) #define GTSAM_CONCEPT_ASSERT4(concept) BOOST_CONCEPT_ASSERT((concept)) -#define GTSAM_CONCEPT_REQUIRES(concept, return_type) BOOST_CONCEPT_REQUIRES((concept), (return_type)) +#define GTSAM_CONCEPT_REQUIRES(concept, return_type) BOOST_CONCEPT_REQUIRES(((concept)), (return_type)) #else // These do something sensible: -#define GTSAM_CONCEPT_USAGE(concept) void check##concept() +#define BOOST_CONCEPT_USAGE(concept) void check##concept() // TODO(dellaert): would be nice if it was a single macro... #define GTSAM_CONCEPT_ASSERT(concept) concept checkConcept [[maybe_unused]]; #define GTSAM_CONCEPT_ASSERT1(concept) concept checkConcept1 [[maybe_unused]];