1/*
2 * concepts.h
3 *
4 * @date Dec 4, 2014
5 * @author Mike Bosse
6 * @author Frank Dellaert
7 */
8
9#pragma once
10
11#include <gtsam/config.h>
12
13#if GTSAM_USE_BOOST_FEATURES
14#include <boost/concept_check.hpp>
15#include <boost/concept/assert.hpp>
16#include <boost/concept/requires.hpp>
17#include <boost/concept_check.hpp>
18#define GTSAM_CONCEPT_ASSERT(concept) BOOST_CONCEPT_ASSERT((concept))
19#define GTSAM_CONCEPT_REQUIRES(concept, return_type) BOOST_CONCEPT_REQUIRES(((concept)), (return_type))
20#define GTSAM_CONCEPT_USAGE BOOST_CONCEPT_USAGE
21#else
22// This does something sensible:
23#define GTSAM_CONCEPT_USAGE(concept) void check##concept()
24// These just ignore the concept checking for now:
25#define GTSAM_CONCEPT_ASSERT(concept) static_assert(true, "")
26#define GTSAM_CONCEPT_REQUIRES(concept, return_type) return_type
27#endif
28
29