📄 msvc.hpp
字号:
// 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># endifnamespace 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -