1 // -- core.hpp -- Boost Lambda Library -------------------------------------
2 //
3 // Copyright (C) 2000 Gary Powell (powellg@amazon.com)
4 // Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
5 //
6 // Distributed under the Boost Software License, Version 1.0. (See
7 // accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
9 //
10 // For more information, see www.boost.org
11 //
12 // Includes the core of LL, without any real features for client:
13 //
14 // tuples, lambda functors, return type deduction templates,
15 // argument substitution mechanism (select functions)
16 //
17 // Some functionality comes as well:
18 // Assignment and subscript operators, as well as function
19 // call operator for placeholder variables.
20 // -------------------------------------------------------------------------
21 
22 #ifndef BOOST_LAMBDA_CORE_HPP
23 #define BOOST_LAMBDA_CORE_HPP
24 
25 #include "boost/config.hpp"
26 
27 #include "boost/type_traits/transform_traits.hpp"
28 #include "boost/type_traits/cv_traits.hpp"
29 
30 #include "boost/tuple/tuple.hpp"
31 
32 // inject some of the tuple names into lambda
33 namespace boost {
34 namespace lambda {
35 
36 using ::boost::tuples::tuple;
37 using ::boost::tuples::null_type;
38 
39 } // lambda
40 } // boost
41 
42 #include "boost/lambda/detail/lambda_config.hpp"
43 #include "boost/lambda/detail/lambda_fwd.hpp"
44 
45 #include "boost/lambda/detail/arity_code.hpp"
46 #include "boost/lambda/detail/actions.hpp"
47 
48 #include "boost/lambda/detail/lambda_traits.hpp"
49 
50 #include "boost/lambda/detail/function_adaptors.hpp"
51 #include "boost/lambda/detail/return_type_traits.hpp"
52 
53 #include "boost/lambda/detail/select_functions.hpp"
54 
55 #include "boost/lambda/detail/lambda_functor_base.hpp"
56 
57 #include "boost/lambda/detail/lambda_functors.hpp"
58 
59 #include "boost/lambda/detail/ret.hpp"
60 
61 namespace boost {
62 namespace lambda {
63 
64 namespace {
65 
66   // These are constants types and need to be initialised
67   boost::lambda::placeholder1_type free1 = boost::lambda::placeholder1_type();
68   boost::lambda::placeholder2_type free2 = boost::lambda::placeholder2_type();
69   boost::lambda::placeholder3_type free3 = boost::lambda::placeholder3_type();
70 
71   boost::lambda::placeholder1_type& BOOST_ATTRIBUTE_UNUSED _1 = free1;
72   boost::lambda::placeholder2_type& BOOST_ATTRIBUTE_UNUSED _2 = free2;
73   boost::lambda::placeholder3_type& BOOST_ATTRIBUTE_UNUSED _3 = free3;
74   // _1, _2, ... naming scheme by Peter Dimov
75 } // unnamed
76 
77 } // lambda
78 } // boost
79 
80 
81 #endif //BOOST_LAMBDA_CORE_HPP
82