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     arg()
32     {
33     }
34 
argboost::arg35     template< class T > arg( T const & /* t */ )
36     {
37         BOOST_STATIC_ASSERT( I == is_placeholder<T>::value );
38     }
39 };
40 
operator ==(arg<I> const &,arg<I> const &)41 template< 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 
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