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/config/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 { ~usage_requirementsboost::concepts::usage_requirements16 ~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