diff options
author | Jelte Jansen <jelte@isc.org> | 2009-10-30 18:19:48 +0100 |
---|---|---|
committer | Jelte Jansen <jelte@isc.org> | 2009-10-30 18:19:48 +0100 |
commit | 24445dcc33ab8837cc4e34e318d2b7dcb27294ee (patch) | |
tree | 120efccf24731e5d57027ce3407dd0f9e0782125 /ext/boost/concept/detail/msvc.hpp | |
parent | Add command "boss shutdown" (diff) | |
download | kea-24445dcc33ab8837cc4e34e318d2b7dcb27294ee.tar.xz kea-24445dcc33ab8837cc4e34e318d2b7dcb27294ee.zip |
update boost import script; added missing library parts
git-svn-id: svn://bind10.isc.org/svn/bind10/branches/f2f200910@231 e5f2f494-b856-4b98-b285-d166d9295462
Diffstat (limited to 'ext/boost/concept/detail/msvc.hpp')
-rw-r--r-- | ext/boost/concept/detail/msvc.hpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/ext/boost/concept/detail/msvc.hpp b/ext/boost/concept/detail/msvc.hpp new file mode 100644 index 0000000000..3aadb79216 --- /dev/null +++ b/ext/boost/concept/detail/msvc.hpp @@ -0,0 +1,92 @@ +// 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_CHECK_MSVC_DWA2006429_HPP +# define BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP + +# include <boost/preprocessor/cat.hpp> + +# ifdef BOOST_OLD_CONCEPT_SUPPORT +# include <boost/concept/detail/has_constraints.hpp> +# include <boost/mpl/if.hpp> +# endif + + +namespace boost { namespace concept { + +template <class Model> +struct check +{ + virtual void failed(Model* x) + { + x->~Model(); + } +}; + +# ifdef BOOST_OLD_CONCEPT_SUPPORT + +namespace detail +{ + // No need for a virtual function here, since evaluating + // not_satisfied below will have already instantiated the + // constraints() member. + struct constraint {}; +} + +template <class Model> +struct require + : mpl::if_c< + not_satisfied<Model>::value + , detail::constraint + , check<Model> + >::type +{}; + +# else + +template <class Model> +struct require + : check<Model> +{}; + +# endif + +# if BOOST_WORKAROUND(BOOST_MSVC, == 1310) + +// +// The iterator library sees some really strange errors unless we +// do things this way. +// +template <class Model> +struct require<void(*)(Model)> +{ + virtual void failed(Model*) + { + require<Model>(); + } +}; + +# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \ +enum \ +{ \ + BOOST_PP_CAT(boost_concept_check,__LINE__) = \ + sizeof(::boost::concept::require<ModelFnPtr>) \ +} + +# else // Not vc-7.1 + +template <class Model> +require<Model> +require_(void(*)(Model)); + +# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \ +enum \ +{ \ + BOOST_PP_CAT(boost_concept_check,__LINE__) = \ + sizeof(::boost::concept::require_((ModelFnPtr)0)) \ +} + +# endif +}} + +#endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP |