Boost GIL


concept_check.hpp
1//
2// Copyright 2005-2007 Adobe Systems Incorporated
3//
4// Distributed under the Boost Software License, Version 1.0
5// See accompanying file LICENSE_1_0.txt or copy at
6// http://www.boost.org/LICENSE_1_0.txt
7//
8#ifndef BOOST_GIL_CONCEPTS_CONCEPTS_CHECK_HPP
9#define BOOST_GIL_CONCEPTS_CONCEPTS_CHECK_HPP
10
11#include <boost/config.hpp>
12
13#if defined(BOOST_CLANG)
14#pragma clang diagnostic push
15#pragma clang diagnostic ignored "-Wunknown-pragmas"
16#pragma clang diagnostic ignored "-Wconversion"
17#pragma clang diagnostic ignored "-Wfloat-equal"
18#pragma clang diagnostic ignored "-Wuninitialized"
19#endif
20
21#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
22#pragma GCC diagnostic push
23#pragma GCC diagnostic ignored "-Wconversion"
24#pragma GCC diagnostic ignored "-Wfloat-equal"
25#pragma GCC diagnostic ignored "-Wuninitialized"
26#endif
27
28#include <boost/concept_check.hpp>
29
30#if defined(BOOST_CLANG)
31#pragma clang diagnostic pop
32#endif
33
34#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
35#pragma GCC diagnostic pop
36#endif
37
38// TODO: Document BOOST_GIL_USE_CONCEPT_CHECK here
39
40namespace boost { namespace gil {
41
42// TODO: What is BOOST_GIL_CLASS_REQUIRE for; Why not use BOOST_CLASS_REQUIRE?
43// TODO: What is gil_function_requires for; Why not function_requires?
44
45#ifdef BOOST_GIL_USE_CONCEPT_CHECK
46 #define BOOST_GIL_CLASS_REQUIRE(type_var, ns, concept) \
47 BOOST_CLASS_REQUIRE(type_var, ns, concept);
48
49 template <typename Concept>
50 void gil_function_requires() { function_requires<Concept>(); }
51#else
52 #define BOOST_GIL_CLASS_REQUIRE(type_var, ns, concept)
53
54 template <typename C>
55 void gil_function_requires() {}
56#endif
57
58}} // namespace boost::gil:
59
60#endif
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition algorithm.hpp:36