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 #include <boost/static_assert.hpp> 25 26 namespace boost 27 { 28 29 template< int I > struct arg 30 { argboost::arg31 BOOST_CONSTEXPR arg() 32 { 33 } 34 argboost::arg35 template< class T > BOOST_CONSTEXPR arg( T const & /* t */ ) 36 { 37 BOOST_STATIC_ASSERT( I == is_placeholder<T>::value ); 38 } 39 }; 40 operator ==(arg<I> const &,arg<I> const &)41template< int I > BOOST_CONSTEXPR bool operator==( arg<I> const &, arg<I> const & ) 42 { 43 return true; 44 } 45 46 #if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) 47 48 template< int I > struct is_placeholder< arg<I> > 49 { 50 enum _vt { value = I }; 51 }; 52 53 template< int I > struct is_placeholder< arg<I> (*) () > 54 { 55 enum _vt { value = I }; 56 }; 57 58 #endif 59 60 } // namespace boost 61 62 #endif // #ifndef BOOST_BIND_ARG_HPP_INCLUDED 63