usage.hpp 1.1 KB

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