/extlibs/Boost/include/boost/bind/arg.hpp
C++ Header | 62 lines | 35 code | 14 blank | 13 comment | 2 complexity | bfc10da8a35647fffc4fd364ee2664e3 MD5 | raw file
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 25namespace boost 26{ 27 28template< int I > struct arg 29{ 30 arg() 31 { 32 } 33 34 template< class T > arg( T const & /* t */ ) 35 { 36 // static assert I == is_placeholder<T>::value 37 typedef char T_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ]; 38 } 39}; 40 41template< int I > bool operator==( arg<I> const &, arg<I> const & ) 42{ 43 return true; 44} 45 46#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) 47 48template< int I > struct is_placeholder< arg<I> > 49{ 50 enum _vt { value = I }; 51}; 52 53template< 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