summaryrefslogtreecommitdiffstats
path: root/contrib/src/boost/concept/usage.hpp
blob: a8270b76dca8f8f66b07b0709e7c4bf9267ca607 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Copyright David Abrahams 2006. Distributed under the Boost

// Software License, Version 1.0. (See accompanying

// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

#ifndef BOOST_CONCEPT_USAGE_DWA2006919_HPP

# define BOOST_CONCEPT_USAGE_DWA2006919_HPP


# include <boost/concept/assert.hpp>

# include <boost/detail/workaround.hpp>

# include <boost/concept/detail/backward_compatibility.hpp>


namespace boost { namespace concepts { 

template <class Model>
struct usage_requirements
{
    ~usage_requirements() { ((Model*)0)->~Model(); }
};

#  if BOOST_WORKAROUND(__GNUC__, <= 3)


#   define BOOST_CONCEPT_USAGE(model)                                    \

      model(); /* at least 2.96 and 3.4.3 both need this :( */           \
      BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
      ~model()

#  else


#   define BOOST_CONCEPT_USAGE(model)                                    \

      BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
      ~model()

#  endif


}} // namespace boost::concepts


#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP