1 | // 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 <boost/concept/assert.hpp> |
8 | # include <boost/detail/workaround.hpp> |
9 | # include <boost/concept/detail/backward_compatibility.hpp> |
10 | |
11 | namespace boost { namespace concepts { |
12 | |
13 | template <class Model> |
14 | struct usage_requirements |
15 | { |
16 | ~usage_requirements() { ((Model*)0)->~Model(); } |
17 | }; |
18 | |
19 | # if BOOST_WORKAROUND(__GNUC__, <= 3) |
20 | |
21 | # define BOOST_CONCEPT_USAGE(model) \ |
22 | model(); /* at least 2.96 and 3.4.3 both need this :( */ \ |
23 | BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \ |
24 | ~model() |
25 | |
26 | # else |
27 | |
28 | # define BOOST_CONCEPT_USAGE(model) \ |
29 | BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \ |
30 | ~model() |
31 | |
32 | # endif |
33 | |
34 | }} // namespace boost::concepts |
35 | |
36 | #endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP |
37 | |