Object Pool Constructors Generator

Description

The template class object_pool (see object_pool.html) contains a number of functions
construct(..), which both allocate and construct
an object in a single operation.

Since the number and type of arguments to this function is totally
arbitrary, a simple system has been set up to automatically generate
template construct functions. This system is
based on the macro preprocessor m4, which is standard on
UNIX systems and also available for Win32 systems.

detail/pool_construct.m4, when run with m4, will create
the file detail/pool_construct.inc, which only defines the construct functions for the proper number of arguments. The
number of arguments may be passed into the file as an m4 macro,
NumberOfArguments; if not provided, it will
default to 3.

For each different number of arguments (1 to
NumberOfArguments), a template function is
generated. There are the same number of template parameters as there are
arguments, and each argument's type is a reference to that (possibly
cv-qualified) template argument. Each possible permutation of the
cv-qualifications is also generated.

Because each permutation is generated for each possible number of
arguments, the included file size grows exponentially in terms of the
number of constructor arguments, not linearly. For the sake of rational
compile times, only use as many arguments as you need.

detail/pool_construct.bat and detail/pool_construct.sh are also provided
to call m4, defining NumberOfArguments to be their command-line parameter. See
these files for more details.