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_DETAIL_BORLAND_DWA2006429_HPP
5 # define BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
6 
7 # include <boost/preprocessor/cat.hpp>
8 # include <boost/concept/detail/backward_compatibility.hpp>
9 
10 namespace boost { namespace concepts {
11 
12 template <class ModelFnPtr>
13 struct require;
14 
15 template <class Model>
16 struct require<void(*)(Model)>
17 {
18     enum { instantiate = sizeof((((Model*)0)->~Model()), 3) };
19 };
20 
21 #  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )         \
22   enum                                                  \
23   {                                                     \
24       BOOST_PP_CAT(boost_concept_check,__LINE__) =      \
25       boost::concepts::require<ModelFnPtr>::instantiate  \
26   }
27 
28 }} // namespace boost::concept
29 
30 #endif // BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
31