1 #ifndef BOOST_BIND_ARG_HPP_INCLUDED 2 #define BOOST_BIND_ARG_HPP_INCLUDED 3 4 // MS compatible compilers support #pragma once 5 6 #if defined(_MSC_VER) && (_MSC_VER >= 1020) 7 # pragma once 8 #endif 9 10 // 11 // bind/arg.hpp 12 // 13 // Copyright (c) 2002 Peter Dimov and Multi Media Ltd. 14 // 15 // Distributed under the Boost Software License, Version 1.0. (See 16 // accompanying file LICENSE_1_0.txt or copy at 17 // http://www.boost.org/LICENSE_1_0.txt) 18 // 19 // See http://www.boost.org/libs/bind/bind.html for documentation. 20 // 21 22 #include <boost/config.hpp> 23 #include <boost/is_placeholder.hpp> 24 25 namespace boost 26 { 27 28 template<bool Eq> struct _arg_eq 29 { 30 }; 31 32 template<> struct _arg_eq<true> 33 { 34 typedef void type; 35 }; 36 37 template< int I > struct arg 38 { argboost::arg39 BOOST_CONSTEXPR arg() 40 { 41 } 42 argboost::arg43 template< class T > BOOST_CONSTEXPR arg( T const & /* t */, typename _arg_eq< I == is_placeholder<T>::value >::type * = 0 ) 44 { 45 } 46 }; 47 operator ==(arg<I> const &,arg<I> const &)48template< int I > BOOST_CONSTEXPR bool operator==( arg<I> const &, arg<I> const & ) 49 { 50 return true; 51 } 52 53 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) 54 55 template< int I > struct is_placeholder< arg<I> > 56 { 57 enum _vt { value = I }; 58 }; 59 60 template< int I > struct is_placeholder< arg<I> (*) () > 61 { 62 enum _vt { value = I }; 63 }; 64 65 #endif 66 67 } // namespace boost 68 69 #endif // #ifndef BOOST_BIND_ARG_HPP_INCLUDED 70