]> git.lyx.org Git - lyx.git/blob - boost/boost/bind/arg.hpp
boost: update to 1.42.0
[lyx.git] / boost / boost / bind / arg.hpp
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< 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
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