blob: 085cdd9970b3495c9cfcf1ba1b6ab51b483c4721 [file] [log] [blame]
Jeff Thompsonef2d5a42013-08-22 19:09:24 -07001// Copyright David Abrahams 2006. Distributed under the Boost
2// Software License, Version 1.0. (See accompanying
3// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4#ifndef BOOST_CONCEPT_USAGE_DWA2006919_HPP
5# define BOOST_CONCEPT_USAGE_DWA2006919_HPP
6
7# include <ndnboost/concept/assert.hpp>
8# include <ndnboost/detail/workaround.hpp>
9# include <ndnboost/concept/detail/backward_compatibility.hpp>
10
11namespace ndnboost { namespace concepts {
12
13# if BOOST_WORKAROUND(__GNUC__, == 2)
14
15# define BOOST_CONCEPT_USAGE(model) ~model()
16
17# else
18
19template <class Model>
20struct usage_requirements
21{
22 ~usage_requirements() { ((Model*)0)->~Model(); }
23};
24
25# if BOOST_WORKAROUND(__GNUC__, <= 3)
26
27# define BOOST_CONCEPT_USAGE(model) \
28 model(); /* at least 2.96 and 3.4.3 both need this :( */ \
29 BOOST_CONCEPT_ASSERT((ndnboost::concepts::usage_requirements<model>)); \
30 ~model()
31
32# else
33
34# define BOOST_CONCEPT_USAGE(model) \
35 BOOST_CONCEPT_ASSERT((ndnboost::concepts::usage_requirements<model>)); \
36 ~model()
37
38# endif
39
40# endif
41
42}} // namespace ndnboost::concepts
43
44#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP