1// lambda_fwd.hpp - Boost Lambda Library -------------------------------
2
3// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
4//
5// Distributed under the Boost Software License, Version 1.0. (See
6// accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
9// For more information, see www.boost.org
10
11// -------------------------------------------------------
12
13#ifndef BOOST_LAMBDA_FWD_HPP
14#define BOOST_LAMBDA_FWD_HPP
15
16namespace boost {
17namespace lambda {
18
19namespace detail {
20
21template<class T> struct generate_error;
22
23}
24// -- placeholders --------------------------------------------
25
26template <int I> struct placeholder;
27
28// function_adaptors
29template <class Func>
30struct function_adaptor;
31
32template <int I, class Act> class action;
33
34template <class Base>
35class lambda_functor;
36
37template <class Act, class Args>
38class lambda_functor_base;
39
40} // namespace lambda
41} // namespace boost
42
43
44// #define CALL_TEMPLATE_ARGS class A, class Env
45// #define CALL_FORMAL_ARGS A& a, Env& env
46// #define CALL_ACTUAL_ARGS a, env
47// #define CALL_ACTUAL_ARGS_NO_ENV a
48// #define CALL_REFERENCE_TYPES A&, Env&
49// #define CALL_PLAIN_TYPES A, Env
50#define CALL_TEMPLATE_ARGS class A, class B, class C, class Env
51#define CALL_FORMAL_ARGS A& a, B& b, C& c, Env& env
52#define CALL_ACTUAL_ARGS a, b, c, env
53#define CALL_ACTUAL_ARGS_NO_ENV a, b, c
54#define CALL_REFERENCE_TYPES A&, B&, C&, Env&
55#define CALL_PLAIN_TYPES A, B, C, Env
56
57namespace boost {
58namespace lambda {
59namespace detail {
60
61template<class A1, class A2, class A3, class A4>
62void do_nothing(A1&, A2&, A3&, A4&) {}
63
64} // detail
65} // lambda
66} // boost
67
68// prevent the warnings from unused arguments
69#define CALL_USE_ARGS \
70::boost::lambda::detail::do_nothing(a, b, c, env)
71
72
73
74#endif
75