1 2 #ifndef BOOST_MPL_PROTECT_HPP_INCLUDED 3 #define BOOST_MPL_PROTECT_HPP_INCLUDED 4 5 // Copyright Peter Dimov 2001 6 // Copyright Aleksey Gurtovoy 2002-2004 7 // 8 // Distributed under the Boost Software License, Version 1.0. 9 // (See accompanying file LICENSE_1_0.txt or copy at 10 // http://www.boost.org/LICENSE_1_0.txt) 11 // 12 // See http://www.boost.org/libs/mpl for documentation. 13 14 // $Id: protect.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ 15 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $ 16 // $Revision: 49267 $ 17 18 #include <boost/mpl/aux_/arity.hpp> 19 #include <boost/mpl/aux_/config/dtp.hpp> 20 #include <boost/mpl/aux_/nttp_decl.hpp> 21 #include <boost/mpl/aux_/na_spec.hpp> 22 23 namespace boost { namespace mpl { 24 25 template< 26 typename BOOST_MPL_AUX_NA_PARAM(T) 27 , int not_le_ = 0 28 > 29 struct protect : T 30 { 31 #if BOOST_WORKAROUND(__EDG_VERSION__, == 238) 32 typedef mpl::protect type; 33 #else 34 typedef protect type; 35 #endif 36 }; 37 38 #if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) 39 namespace aux { 40 template< BOOST_MPL_AUX_NTTP_DECL(int, N), typename T > 41 struct arity< protect<T>, N > 42 : arity<T,N> 43 { 44 }; 45 } // namespace aux 46 #endif 47 48 BOOST_MPL_AUX_NA_SPEC_MAIN(1, protect) 49 #if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) 50 BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(1, 1, protect) 51 #endif 52 53 }} 54 55 #endif // BOOST_MPL_PROTECT_HPP_INCLUDED 56