]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/local_function/include/boost/local_function/config.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / local_function / include / boost / local_function / config.hpp
CommitLineData
7c673cae
FG
1
2// Copyright (C) 2009-2012 Lorenzo Caminiti
3// Distributed under the Boost Software License, Version 1.0
4// (see accompanying file LICENSE_1_0.txt or a copy at
5// http://www.boost.org/LICENSE_1_0.txt)
6// Home at http://www.boost.org/libs/local_function
7
8#ifndef BOOST_LOCAL_FUNCTION_CONFIG_HPP_
9#define BOOST_LOCAL_FUNCTION_CONFIG_HPP_
10
11#ifndef DOXYGEN
12
13#include <boost/config.hpp>
14
15#ifndef BOOST_LOCAL_FUNCTION_CONFIG_FUNCTION_ARITY_MAX
16# define BOOST_LOCAL_FUNCTION_CONFIG_FUNCTION_ARITY_MAX 5
17#endif
18
19#ifndef BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX
20# define BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX 10
21#endif
22
23#ifndef BOOST_LOCAL_FUNCTION_CONFIG_LOCALS_AS_TPARAMS
24# ifdef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
25# define BOOST_LOCAL_FUNCTION_CONFIG_LOCALS_AS_TPARAMS 0
26# else
27# define BOOST_LOCAL_FUNCTION_CONFIG_LOCALS_AS_TPARAMS 1
28# endif
29#elif BOOST_LOCAL_FUNCTION_CONFIG_LOCALS_AS_TPARAMS // If true, force it to 1.
30# undef BOOST_LOCAL_FUNCTION_CONFIG_LOCALS_AS_TPARAMS
31# define BOOST_LOCAL_FUNCTION_CONFIG_LOCALS_AS_TPARAMS 1
32#endif
33
34#else // DOXYGEN
35
36/** @file
37@brief Configuration macros allow to change the behaviour of this library at
38compile-time.
39*/
40
41/**
42@brief Maximum number of parameters supported by local functions.
43
44If programmers leave this configuration macro undefined, its default
45value is <c>5</c> (increasing this number might increase compilation time).
46When defined by programmers, this macro must be a non-negative integer number.
47
48@Note This macro specifies the maximum number of local function parameters
49excluding bound variables (which are instead specified by
50@RefMacro{BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX}).
51
52@See @RefSect{tutorial, Tutorial} section,
53@RefSect{getting_started, Getting Started} section,
54@RefMacro{BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX}.
55*/
56#define BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX
57
58/**
59@brief Maximum number of bound variables supported by local functions.
60
61If programmers leave this configuration macro undefined, its default
62value is <c>10</c> (increasing this number might increase compilation time).
63When defined by programmers, this macro must be a non-negative integer number.
64
65@Note This macro specifies the maximum number of bound variables excluding
66local function parameters (which are instead specified by
67@RefMacro{BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX}).
68
69@See @RefSect{tutorial, Tutorial} section,
70@RefSect{getting_started, Getting Started} section,
71@RefMacro{BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX}.
72*/
73#define BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX
74
75/**
76@brief Specify when local functions can be passed as template parameters
77without introducing any run-time overhead.
78
79If this macro is defined to <c>1</c>, this library will assume that the
80compiler allows to pass local classes as template parameters:
81@code
82 template<typename T> void f(void) {}
83
84 int main(void) {
85 struct local_class {};
86 f<local_class>();
87 return 0;
88 }
89@endcode
90This is the case for C++11 compilers and some C++03 compilers (e.g., MSVC), but
91it is not the case in general for most C++03 compilers (including GCC).
92This will allow the library to pass local functions as template parameters
93without introducing any run-time overhead (specifically without preventing the
94compiler from optimizing local function calls by inlining their assembly code).
95
96If this macro is defined to <c>0</c> instead, this library will introduce
97a run-time overhead associated to resolving a function pointer call in order to
98still allow to pass the local functions as template parameters.
99
100It is recommended to leave this macro undefined.
101In this case, the library will automatically define this macro to <c>0</c> if
102the Boost.Config macro <c>BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS</c> is
103defined for the specific compiler, and to <c>1</c> otherwise.
104
105@See @RefSect{getting_started, Getting Started} section,
106@RefSect{advanced_topics, Advanced Topics} section,
107@RefMacro{BOOST_LOCAL_FUNCTION_NAME}.
108*/
109#define BOOST_LOCAL_FUNCTION_CONFIG_LOCALS_AS_TPARAMS
110
111#endif // DOXYGEN
112
113#endif // #include guard
114