Squashed 'third_party/boostorg/function_types/' content from commit ae4fde2
Change-Id: I946aaade9862a3a50fdce89fbc618c914b0edae6
git-subtree-dir: third_party/boostorg/function_types
git-subtree-split: ae4fde2e2ae88291d6d656137169ff4003d184a1
diff --git a/doc/Jamfile b/doc/Jamfile
new file mode 100644
index 0000000..1544b8d
--- /dev/null
+++ b/doc/Jamfile
@@ -0,0 +1,27 @@
+
+# (C) Copyright Tobias Schwinger
+#
+# Use modification and distribution are subject to the boost Software License,
+# Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+using quickbook ;
+
+xml function_types : function_types.qbk ;
+boostbook standalone
+ :
+ function_types
+ :
+ <xsl:param>boost.root=../../../..
+ <xsl:param>chunk.first.sections=1
+ <xsl:param>chunk.section.depth=2
+ <xsl:param>generate.section.toc.level=2
+ <xsl:param>toc.section.depth=1
+ <xsl:param>toc.max.depth=1
+ ;
+
+
+###############################################################################
+alias boostdoc ;
+explicit boostdoc ;
+alias boostrelease : standalone ;
+explicit boostrelease ;
diff --git a/doc/function_types.qbk b/doc/function_types.qbk
new file mode 100644
index 0000000..598a7b5
--- /dev/null
+++ b/doc/function_types.qbk
@@ -0,0 +1,1105 @@
+[library Boost.FunctionTypes
+ [quickbook 1.3]
+ [version 2.5]
+ [authors [Schwinger, Tobias]]
+ [copyright 2004-2007 Tobias Schwinger]
+ [license
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ [@http://www.boost.org/LICENSE_1_0.txt])
+ ]
+ [purpose Meta-programming support library]
+ [category template]
+ [category generic]
+ [last-revision $Date$]
+]
+
+[def __unspecified__ /unspecified/]
+
+[def __mpl__ [@../../../mpl/index.html MPL]]
+[def __mpl_integral_constant__ __mpl__ - [@../../../mpl/doc/refmanual/integral-constant.html Integral Constant]]
+[def __mpl_fwd_seq__ __mpl__ - [@../../../mpl/doc/refmanual/forward-sequence.html Forward Sequence]]
+[def __mpl_fb_ext_ra_seq__ __mpl__ - [@../../../mpl/doc/refmanual/front-extensible-sequence.html Front] / [@../../../mpl/doc/refmanual/back-extensible-sequence.html Back ][@../../../mpl/doc/refmanual/extensible-sequence.html Extensible ][@../../../mpl/doc/refmanual/random-access-sequence.html Random Access Sequence]]
+[def __mpl_lambda_expression__ __mpl__ - [@../../../mpl/doc/refmanual/lambda-expression.html Lambda Expression]]
+
+[def __is_function [link boost_functiontypes.reference.classification.is_function is_function]]
+[def __is_function_pointer [link boost_functiontypes.reference.classification.is_function_pointer is_function_pointer]]
+[def __is_function_reference [link boost_functiontypes.reference.classification.is_function_reference is_function_reference]]
+[def __is_member_function_pointer [link boost_functiontypes.reference.classification.is_member_function_pointer is_member_function_pointer]]
+[def __is_callable_builtin [link boost_functiontypes.reference.classification.is_callable_builtin is_callable_builtin]]
+[def __is_nonmember_callable_builtin [link boost_functiontypes.reference.classification.is_nonmember_callable_builtin is_nonmember_callable_builtin]]
+
+[def __components [link boost_functiontypes.reference.decomposition.components components]]
+[def __parameter_types [link boost_functiontypes.reference.decomposition.parameter_types parameter_types]]
+[def __function_arity [link boost_functiontypes.reference.decomposition.function_arity function_arity]]
+[def __result_type [link boost_functiontypes.reference.decomposition.result_type result_type]]
+
+[def __function_type [link boost_functiontypes.reference.synthesis.function_type function_type]]
+[def __function_pointer [link boost_functiontypes.reference.synthesis.function_pointer function_pointer]]
+[def __function_reference [link boost_functiontypes.reference.synthesis.function_reference function_reference]
+[def __member_function_pointer [link boost_functiontypes.reference.synthesis.member_function_pointer member_function_pointer]]
+
+[def __null_tag [link boost_functiontypes.reference.tag_types.null_tag null_tag]]
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+
+[section:introduction Introduction]
+
+Boost.FunctionTypes provides functionality to classify, decompose and synthesize
+function, function pointer, function reference and pointer to member types.
+
+We collectively refer to these types as /callable builtin/ types.
+
+In particular, the library can be used to:
+
+* test whether a type is a specific callable, builtin type,
+* extract all component properties from callable, builtin types, and
+* create callable, builtin types from specified properties.
+
+The library is designed to work well with other Boost libraries and uses
+well-accepted concepts introduced by Boost and TR1.
+
+Templates that encapsulate boolean or numeric properties define a static member
+constant called [^value].
+
+ __is_function_pointer< bool(*)(int) >::value // == true
+
+ __function_arity< bool(*)(int) >::value // == 1
+
+Templates that encapsulate properties that are single types contain a type
+member called [^type].
+
+ __function_type< mpl::vector<bool,int> >::type // is bool(int)
+
+ __result_type< bool(&)(int) >::type // is bool
+
+Templates that encapsulate properties that are type lists model an
+MPL-compatible type sequence.
+
+ __parameter_types< bool(int) > // models an MPL sequence
+
+[endsect]
+
+[section:use_cases Use Cases]
+
+Generic libraries that accept callable arguments are common in C++.
+Accepting a callable argument of builin type often involves a lot of repetitive
+code because the accepting function is overloaded for different function
+arities. Further, member functions may have [^const]/[^volatile]-qualifiers,
+a function may take a variable number of (additional, POD-typed) arguments (such
+as [^printf]) and several C++ implementations encode a calling convention with
+each function's type to allow calls across language or (sub-)system boundaries.
+
+ template<typename R>
+ void accept_function(R(* func)());
+
+ template<typename R>
+ void accept_function(R(& func)());
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)());
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)() const);
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)() volatile);
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)() const volatile);
+
+ template<typename R>
+ void accept_function(R(* func)(...));
+
+ template<typename R>
+ void accept_function(R(& func)(...));
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)(...));
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)(...) const);
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)(...) volatile);
+
+ template<typename R, typename C>
+ void accept_function(R(C::* func)(...) const volatile);
+
+ // ...
+
+ // needs to be repeated for every additional function parameter
+ // times the number of possible calling conventions
+
+The "overloading approach" obviously does not scale well: There might be several
+functions that accept callable arguments in one library and client code might
+end up using several libraries that use this pattern.
+On the developer side, library developers spend their time solving the same
+problem, working around the same portability issues, and apply similar
+optimizations to keep the compilation time down.
+
+Using Boost.FunctionTypes it is possible to write a single function template
+instead:
+
+ template<typename F>
+ void accept_function(F f)
+ {
+ // ... use Boost.FunctionTypes to analyse F
+ }
+
+The combination with a tuples library that provides an invoker component, such
+as [@../../../fusion/index.html Boost.Fusion], allows to build flexible callback
+facilities that are entirely free of repetitive code as shown by the
+[@../../../function_types/example/interpreter.hpp interpreter example].
+
+When taking the address of an overloaded function or function template, the
+type of the function must be known from the context the expression is used
+in. The code below shows three examples for choosing the [^float(float)]
+overload of [^std::abs].
+
+ float (*ptr_absf)(float) = & std::abs;
+
+
+ void foo(float(*func)(float));
+
+ void bar()
+ {
+ foo(& std::abs);
+ }
+
+
+ std::transform(b, e, o, static_cast<float(*)(float)>(& std::abs));
+
+The library's type synthesis capabilities can be used to automate overload
+selection and instantiation of function templates. Given an overloaded function
+template
+
+ template<typename R, typename T0>
+ R overloaded(T0);
+
+ template<typename R, typename T0, typename T1>
+ R overloaded(T0,T1);
+
+ template<typename R. typename T0, typename T1, typename T2>
+ R overloaded(T0,T1,T2);
+
+we can pick any of the three overloads and instantiate the template with
+template arguments from a type sequence in a single expression:
+
+ static_cast<__function_pointer<Seq>::type>(& overloaded)
+
+This technique can be occasionally more flexible than template argument
+deduction from a function call because the exact types from the sequence
+are used to specialize the template (including possibly cv-qualified
+reference types and the result type). It is applied twice in the
+[@../../../function_types/example/interface.hpp interface example].
+
+Another interersting property of callable, builtin types is that they can be
+valid types for non-type template parameters. This way, a function can be
+pinpointed at compile time, allowing the compiler to eliminate the call by
+inlining.
+The [@../../../function_types/example/fast_mem_fn.hpp fast_mem_fn example]
+exploits this characteristic and implements a potentially inlining version of
+[@../../../bind/mem_fn.html boost::mem_fn]
+limited to member functions that are known at compile time.
+
+[endsect]
+
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+[section:about_tag_types About Tag Types]
+
+Boost.FunctionTypes uses tag types to encode properties that are not types
+per se, such as calling convention or whether a function is variadic or cv-
+qualified.
+
+These tags can be used to determine whether one property of a type has a
+particular value.
+
+ is_function<int(...), variadic>::value // == true
+ is_function<int() , variadic>::value // == false
+
+A compound property tag describes a combination of possible values of different
+properties.
+The type [^components<F>], where [^F] is a callable builtin type, is a compound
+property tag that describes [^F].
+The [^tag] class template can be used to combine property tags.
+
+ tag<non_const,default_cc> // combination of two properties
+
+When several values for the same property are specified in [^tag]'s argument
+list, only the rightmost one is used; others are ignored.
+
+ tag<components<F>, default_cc> // overrides F's calling convention property
+
+When compound property tag is specified to analyse a type, all of its component
+properties must match.
+
+ is_member_function_pointer< F, tag<const_qualified,default_cc> >::value
+ // true for
+ // F = void(a_class::*)() const
+ // false for
+ // F = void(a_class::*)()
+ // F = void(__fastcall a_class::*)() const
+
+Default values are selected for properties not specified by the tag in the
+context of type synthesis.
+
+ // given S = mpl::vector<int,a_class const &>
+
+ member_function_pointer<S>::type // is int (a_class::*)() const
+ // note: the cv-qualification is picked based on the class type,
+ // a nonvariadic signature and the default calling convention
+ // are used
+
+ member_function_pointer<S,non_const>::type // is int (a_class::*)()
+ // no const qualification, as explicitly specified by the tag type
+
+[endsect]
+
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+
+[section:reference Reference]
+
+
+[section:classification Class templates for type classification]
+
+[section:is_function is_function]
+
+ template<typename T, typename Tag = __null_tag>
+ struct is_function;
+
+[*Header]
+
+ #include <boost/function_types/is_function.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^Tag]][Further properties required for a positive result]]
+ [[[^is_function<T,Tag>]][Predicate value as __mpl_integral_constant__]]
+ [[[^is_function<T,Tag>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a function, possibly with
+additional properties as specified by a property tag.
+
+[endsect]
+
+
+[section:is_function_pointer is_function_pointer]
+
+ template<typename T, typename Tag = __null_tag>
+ struct is_function_pointer;
+
+[*Header]
+
+ #include <boost/function_types/is_function_pointer.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^Tag]][Further properties required for a positive result]]
+ [[[^is_function_pointer<T,Tag>]][Predicate value __mpl_integral_constant__]]
+ [[[^is_function_pointer<T,Tag>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a function pointer, possibly with
+additional properties as specified by a property tag.
+
+[endsect]
+
+
+[section:is_function_reference is_function_reference]
+
+ template<typename T, typename Tag = __null_tag>
+ struct is_function_reference;
+
+[*Header]
+
+ #include <boost/function_types/is_function_reference.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^Tag]][Further properties required for a positive result]]
+ [[[^is_function_reference<T,Tag>]][Predicate value __mpl_integral_constant__]]
+ [[[^is_function_reference<T,Tag>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a function reference, possibly with
+additional properties as specified by a property tag.
+
+[endsect]
+
+
+[section:is_member_pointer is_member_pointer]
+
+ template<typename T, typename Tag = __null_tag>
+ struct is_member_pointer;
+
+[*Header]
+
+ #include <boost/function_types/is_member_pointer.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^Tag]][Further properties required for a positive result]]
+ [[[^is_member_pointer<T,Tag>]][Predicate value __mpl_integral_constant__]]
+ [[[^is_member_pointer<T,Tag>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a pointer to member (object or function)
+type, possibly with additional properties as specified by a property tag.
+
+[endsect]
+
+
+[section:is_member_object_pointer is_member_object_pointer]
+
+ template<typename T>
+ struct is_member_object_pointer;
+
+[*Header]
+
+ #include <boost/function_types/is_member_object_pointer.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^is_member_object_pointer<T>]][Predicate value __mpl_integral_constant__]]
+ [[[^is_member_object_pointer<T>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a pointer to member object type.
+
+[endsect]
+
+
+[section:is_member_function_pointer is_member_function_pointer]
+
+ template<typename T, typename Tag = __null_tag>
+ struct is_member_function_pointer;
+
+[*Header]
+
+ #include <boost/function_types/is_member_function_pointer.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^Tag]][Further properties required for a positive result]]
+ [[[^is_member_function_pointer<T,Tag>]][Predicate value __mpl_integral_constant__]]
+ [[[^is_member_function_pointer<T,Tag>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a member function pointer, possibly with
+additional properties as specified by a property tag.
+
+[endsect]
+
+
+[section:is_callable_builtin is_callable_builtin]
+
+ template<typename T, typename Tag = __null_tag>
+ struct is_callable_builtin;
+
+[*Header]
+
+ #include <boost/function_types/is_callable_builtin.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^Tag]][Further properties required for a positive result]]
+ [[[^is_callable_builtin<T,Tag>]][Predicate value as __mpl_integral_constant__]]
+ [[[^is_callable_builtin<T,Tag>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a callable builtin, possibly with
+additional properties as specified by a property tag.
+
+[endsect]
+
+
+
+[section:is_nonmember_callable_builtin is_nonmember_callable_builtin]
+
+ template<typename T, typename Tag = __null_tag>
+ struct is_nonmember_callable_builtin;
+
+[*Header]
+
+ #include <boost/function_types/is_nonmember_callable_builtin.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^Tag]][Further properties required for a positive result]]
+ [[[^is_nonmember_callable_builtin<T,Tag>]][Predicate value as __mpl_integral_constant__]]
+ [[[^is_nonmember_callable_builtin<T,Tag>::value]][Constant boolean value]]
+]
+
+Determines whether a given type is a callable builtin that is not a
+member function pointer, possibly with
+additional properties as specified by a property tag.
+
+[endsect]
+
+
+[endsect] [/ Class templates for type classification ]
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+
+[section:decomposition Class templates for type decomposition]
+
+
+[section:result_type result_type]
+
+ template<typename F>
+ struct result_type;
+
+[*Header]
+
+ #include <boost/function_types/result_type.hpp>
+
+[variablelist
+ [[[^F]][Type to analyze]]
+ [[[^result_type<F>::type]][Result type of [^F]]]
+]
+
+Extracts the result type of a callable, builtin type.
+
+If [^F] is no callable, builtin type, any attempt to access the
+[^type] member results in a compile error.
+
+[endsect]
+
+
+[section:parameter_types parameter_types]
+
+ template<typename F, class ClassTransform = add_reference<_> >
+ struct parameter_types;
+
+[*Header]
+
+ #include <boost/function_types/parameter_types.hpp>
+
+[variablelist
+ [[[^F]][Type to analyze]]
+ [[[^ClassTransform]]
+ [__mpl_lambda_expression__ to transform the
+ class type if [^F] is a member function pointer]]
+
+ [[[^parameter_types<F,ClassTransform>]]
+ [__mpl_fb_ext_ra_seq__ of parameter types]]
+]
+
+Extracts the parameter types of a callable, builtin type.
+
+If [^F] is no callable, builtin type, any attempt to access the
+sequence results in a compile error.
+
+[endsect]
+
+
+[section:function_arity function_arity]
+
+ template<typename F>
+ struct function_arity;
+
+[*Header]
+
+ #include <boost/function_types/function_arity.hpp>
+
+[variablelist
+ [[[^F]][Callable builtin type]]
+ [[[^function_arity<F>]][Function arity as __mpl_integral_constant__]]
+ [[[^function_arity<F>::value]][Constant value of the function arity]]
+]
+
+Extracts the function arity, that is the number of parameters.
+The hidden [^this] of member function pointers counts, in other words
+the arity value is always greater than or equal to one if [^F] is a
+member function pointer.
+
+If [^F] is no callable, builtin type, any attempt to access the
+value results in a compile error.
+
+[endsect]
+
+
+[section:components components]
+
+ template<typename T, class ClassTransform = add_reference<_> >
+ struct components;
+
+[*Header]
+
+ #include <boost/function_types/components.hpp>
+
+[variablelist
+ [[[^T]][Type to analyze]]
+ [[[^ClassTransform]]
+ [__mpl_lambda_expression__ to transform the
+ class type if [^T] is a member function pointer]]
+
+ [[[^components<T,ClassTransform>]]
+ [__mpl_fb_ext_ra_seq__ of all
+ component types and property tag]]
+ [[[^components<T,ClassTransform>::types]]
+ [Decorated MPL Sequence, exposed for optimization]]
+]
+
+Extracts all properties of a callable builtin type, that is the result type,
+followed by the parameter types (including the type of [^this] for member
+function pointers).
+
+If [^T] is no callable builtin type, the component types are an empty
+sequence and the Tag's meaning is equivalent to the [^__null_tag].
+
+[endsect]
+
+[endsect] [/ Class templates for type decomposition]
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+
+[section:synthesis Class templates for type synthesis]
+
+
+[section:function_type function_type]
+
+ template<typename Types, typename Tag = __null_tag>
+ struct function_type;
+
+[*Header]
+
+ #include <boost/function_types/function_type.hpp>
+
+[variablelist
+ [[[^Types]][Component types in form of an __mpl_fwd_seq__ or another callable, builtin type]]
+ [[[^Tag]][Further properties]]
+ [[[^function_type<Types,Tag>::type]][Synthesized type]]
+]
+
+Synthesizes a function type from given properties.
+
+If the template parameters do not describe a valid type, any attempt
+to access the [^type] member will result in a compile error.
+
+[endsect]
+
+
+[section:function_pointer function_pointer]
+
+ template<typename Types, typename Tag = __null_tag>
+ struct function_pointer;
+
+[*Header]
+
+ #include <boost/function_types/function_pointer.hpp>
+
+[variablelist
+ [[[^Types]][Component types in form of an __mpl_fwd_seq__ or another callable, builtin type]]
+ [[[^Tag]][Further properties]]
+ [[[^function_pointer<Types,Tag>::type]][Synthesized type]]
+]
+
+Synthesizes a function pointer type from given properties.
+
+If the template parameters do not describe a valid type, any attempt
+to access the [^type] member will result in a compile error.
+
+[endsect]
+
+
+[section:function_reference function_reference]
+
+ template<typename Types, typename Tag = __null_tag>
+ struct function_reference;
+
+[*Header]
+
+ #include <boost/function_types/function_reference.hpp>
+
+[variablelist
+ [[[^Types]][Component types in form of an __mpl_fwd_seq__ or another callable, builtin type]]
+ [[[^Tag]][Further properties]]
+ [[[^function_reference<Types,Tag>::type]][Synthesized type]]
+]
+
+Synthesizes a function reference type from given properties.
+
+If the template parameters do not describe a valid type, any attempt
+to access the [^type] member will result in a compile error.
+
+[endsect]
+
+
+[section:member_function_pointer member_function_pointer]
+
+ template<typename Types, typename Tag = __null_tag>
+ struct member_function_pointer;
+
+[*Header]
+
+ #include <boost/function_types/member_function_pointer.hpp>
+
+[variablelist
+ [[[^Types]][Component types in form of an __mpl_fwd_seq__ or another callable, builtin type]]
+ [[[^Tag]][Further properties]]
+ [[[^member_function_pointer<Types,Tag>::type]][Synthesized type]]
+]
+
+Synthesizes a member function pointer type from given properties.
+
+An optional reference or possibly cv-qualified pointer is removed from
+the second type in the sequence to determine the the class type.
+The cv-qualification of the resulting type applies to the member
+function, unless otherwise explicitly specified by the property tag.
+
+If the template parameters do not describe a valid type, any attempt
+to access the [^type] member will result in a compile error.
+
+[endsect]
+
+
+[endsect] [/ Class templates for type synthesis ]
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+
+[section:tag_types Tag Types]
+
+[section:variadic variadic]
+
+ typedef __unspecified__ variadic;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type takes a variable number of arguments through
+an ellipsis parameter (such as [^printf]).
+
+[endsect]
+
+[section:non_variadic non_variadic]
+
+ typedef __unspecified__ non_variadic;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type does not have an ellipsis parameter.
+
+[endsect]
+
+[section:default_cc default_cc]
+
+ typedef __unspecified__ default_cc;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type encodes the default calling convention.
+
+[endsect]
+
+[section:const_qualified const_qualified]
+
+ typedef __unspecified__ const_qualified;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is const qualified.
+
+[endsect]
+
+[section:non_const non_const]
+
+ typedef __unspecified__ non_const;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is not const qualified.
+
+[endsect]
+
+[section:volatile_qualified volatile_qualified]
+
+ typedef __unspecified__ volatile_qualified;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is volatile qualified.
+
+[endsect]
+
+[section:non_volatile non_volatile]
+
+ typedef __unspecified__ non_volatile;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is not volatile qualified.
+
+[endsect]
+
+[section:non_cv non_cv]
+
+ typedef __unspecified__ non_cv;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is neither const nor volatile qualified.
+Equivalent to `__tag<__non_const,__non_volatile>`, but involves
+fewer template instantiations when evaluated.
+
+[endsect]
+
+[section:const_non_volatile const_non_volatile]
+
+ typedef __unspecified__ const_non_volatile;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is const but not volatile qualified.
+Equivalent to `__tag<__const_qualified,__non_volatile>`, but involves
+fewer template instantiations when evaluated.
+
+[endsect]
+
+[section:volatile_non_const volatile_non_const]
+
+ typedef __unspecified__ volatile_non_const;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is volatile but not const qualified.
+Equivalent to `__tag<__volatile_qualified,__non_const>`, but involves
+fewer template instantiations when evaluated.
+
+[endsect]
+
+[section:cv_qualfied cv_qualfied]
+
+ typedef __unspecified__ cv_qualified;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States that a function type is both const and volatile qualified.
+Equivalent to `__tag<__const_qualified,__volatile_qualified>`, but involves
+fewer template instantiations when evaluated.
+
+[endsect]
+
+[section:null_tag null_tag]
+
+ typedef __unspecified__ null_tag;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+States nothing.
+
+[endsect]
+
+[section:tag tag]
+
+ template<class Tag1, class Tag2,
+ class Tag3 = null_tag, class Tag4 = null_tag>
+ struct tag;
+
+[*Header]
+
+ #include <boost/function_types/property_tags.hpp>
+
+[variablelist
+ [[[^Tag['N]]][Property tag]]
+ [[[^tag<Tag1,Tag2...>]][Compound property tag]]
+]
+
+Combination of up to four property tags. If the arguments describe different
+values for the same property the value of the rightmost argument is used.
+
+[endsect]
+
+[endsect] [/ Tag Types]
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+
+[section:macros Macros]
+
+[section:BOOST_FT_MAX_ARITY BOOST_FT_MAX_ARITY]
+
+Expands to a numeric value that describes the maximum function arity
+supported by the library.
+
+Defaults to 20 if not explicitly defined by the user before inclusion
+of the first library header.
+
+[endsect]
+
+
+
+[*The following macros do not need to be defined, unless to configure
+the library to work with a compiler and/or calling convention not covered by
+the auto-detection mechanism in [^boost/function_types/config/compiler.hpp].]
+
+
+[section:BOOST_FT_CC_NAMES BOOST_FT_CC_NAMES]
+
+Expands to a [@../../../preprocessor/doc/data/sequences.html sequence] of
+ternary [@../../../preprocessor/doc/data/tuples.html tuples] (these data
+types are defined in the [@../../../preprocessor/doc/index.html
+documentation of the Boost Preprocessor library]).
+Each sequence element describes one calling convention specifier.
+The first element in each tuple is the macro suffix for
+[link boost_functiontypes.reference.macros.BOOST_FT_CC [^BOOST_FT\_CC\_*]],
+the second element is the name of the tag that describes the calling
+convention and the third is the name of the specifier.
+The specifier is allowed to be an empty string, so the third tuple element
+is either [@../../../preprocessor/doc/ref/empty.html [^BOOST_PP_EMPTY]] or
+[@../../../preprocessor/doc/ref/identity.html [^BOOST_PP_IDENTITY]][^(['name])].
+
+Define this macro to extend the set of possible names for custom calling
+conventions. The macro expands to nothing by default.
+
+The following names are predefined by the library and must not occur in the
+definition of [^BOOST_FT_CC_NAMES]:
+
+ #define BOOST_FT_BUILTIN_CC_NAMES \
+ (( IMPLICIT , implicit_cc , BOOST_PP_EMPTY ))\
+ (( CDECL , cdecl_cc , BOOST_PP_IDENTITY(__cdecl ) ))\
+ (( STDCALL , stdcall_cc , BOOST_PP_IDENTITY(__stdcall ) ))\
+ (( PASCAL , pascal_cc , BOOST_PP_IDENTITY(pascal ) ))\
+ (( FASTCALL , fastcall_cc , BOOST_PP_IDENTITY(__fastcall) ))\
+ (( CLRCALL , clrcall_cc , BOOST_PP_IDENTITY(__clrcall ) ))\
+ (( THISCALL , thiscall_cc , BOOST_PP_IDENTITY(__thiscall) ))\
+ (( IMPLICIT_THISCALL , thiscall_cc , BOOST_PP_EMPTY ))
+ // Don't get confused by the last line, here (thiscall can't be specified
+ // explicitly prior to MSVC 8).
+
+[endsect]
+
+[section:BOOST_FT_CC BOOST_FT\_CC\_*]
+
+Enables a specific calling convention. * denotes the macro suffix, as
+defined by
+[link boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES [^BOOST_FT_CC_NAMES]]
+or
+[link boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES [^BOOST_FT_BUILTIN_CC_NAMES]].
+
+The macro expands to a list of restrictions, separated by the [^|] character.
+Possible items are:
+
+* callable_builtin
+* member
+* non_member
+* variadic
+* non_variadic
+
+If no such macro is defined for a particular calling convention, it is disabled.
+Example:
+
+ #define BOOST_FT_CC_STDCALL non_variadic|callable_builtin
+ // enables stdcall calling convention for all non-variadic,
+ // callable, builtin types
+
+[endsect]
+
+[section:BOOST_FT_COMMON_X86_CCs BOOST_FT_COMMON_X86_CCs]
+
+Defining this macro causes the following macros to be defined, if not defined
+already:
+
+ #define BOOST_FT_CC_CDECL BOOST_FT_COMMON_X86_CCs
+ #define BOOST_FT_CC_STDCALL non_variadic|BOOST_FT_COMMON_X86_CCs
+ #define BOOST_FT_CC_FASTCALL non_variadic|BOOST_FT_COMMON_X86_CCs
+
+[endsect]
+
+[section:BOOST_FT_SYNTAX BOOST_FT_SYNTAX]
+
+This macro allows to change the syntax of callable builtin types.
+It is useful to handle the compiler specific placement of the calling
+convention specifier.
+
+The default definition is as follows:
+
+ #define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
+ result() lparen() cc_spec() type_mod() name() rparen()
+
+[endsect]
+
+[section:BOOST_FT_NULLARY_PARAM BOOST_FT_NULLARY_PARAM]
+
+Set to [^void] for compilers that insist on a [^void] parameter for
+nullary function types, empty by default.
+
+[endsect]
+
+[section:BOOST_FT_NO_CV_FUNC_SUPPORT BOOST_FT_NO_CV_FUNC_SUPPORT]
+
+Disables support for cv-qualified function types.
+Cv-qualified function types are illegal by the current standard
+version, but there is a pending defect report on that issue.
+It defaults to [^1] until the standard changes, setting this macro
+to [^0] may not work.
+
+[endsect]
+
+
+
+[*The following macros are useful for testing when changing the source code of
+the library.]
+
+
+
+[section:BOOST_FT_PREPROCESSING_MODE BOOST_FT_PREPROCESSING_MODE]
+
+Makes the compiler preprocess as much as possible of the library code
+(rather than loading already-preprocessed header files) if defined.
+
+[endsect]
+
+[section:BOOST_FT_CC_PREPROCESSING BOOST_FT_CC_PREPROCESSING]
+
+Makes the compiler preprocess the loop over possible names for custom
+calling conventions (rather than loading an already-preprocessed header
+file) if defined.
+
+This macro is defined automatically if
+[link boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES [^BOOST_FT_CC_NAMES]]
+has been defined.
+
+[endsect]
+
+[endsect]
+
+[endsect]
+
+[/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ]
+
+[section:rationale Rationale]
+
+[heading Error handling rationale]
+
+The library does not define the required members of class templates in
+case of an error. This technique causes the compiler to stop displaying
+diagnostics in client code, at the point where the error actually is,
+instead of tracing template instantiations into the implementation of
+the library.
+
+The library's components have limited error conditions, so problematic
+input can be spotted easily.
+
+
+[heading Why MPL Sequences?]
+
+MPL provides algorithms on Sequences, so transformations (such as turning
+by-value parameter types into const references for optimized forwarding
+or computing a signature to specialize
+[@../../../function/index.html [^boost::function]] after applying
+[@../../../bind/index.html [^boost::bind]]) can be expressed more
+easily. The MPL Sequence concept is compatible with several other Boost
+libraries (most importantly [@../../../fusion/index.html Fusion]),
+so another reason is interoperability.
+
+
+[heading Pointer to member object types]
+
+Despite their syntax, pointer to member object types can be seen as
+dereferencing functionals.
+
+
+[heading The ClassTransform template parameter]
+
+[^This]-pointer, [^this]-reference or just the object (or maybe even a
+smart pointer to the object) plus adjustments of cv-qualification - all
+these cases have their place, somewhere and there is no single best answer.
+
+Special treatment of the class type within the sequence can significantly
+complicate client code. A custom [^ClassTransform] argument allows the
+client to adjust the class type before the sequence is formed and then
+treat all parameters uniformly.
+
+
+[heading Why tag types?]
+
+Let's consider the alternatives.
+
+The first one is just using more templates so every property has to be
+asked for explicitly. This approach results in more complicated client
+code if more than one propery has to be checked and in a exponentially
+larger library interface.
+
+The second alternative is having the client pass in bit patterns via
+non-type template parameters. The logic has to be performed by the
+client and there are much more error conditions. Further, class templates
+with non-type template parameters do not work within MPL lambda
+expressions and can cause problems with older compilers.
+
+[heading Is it safe to have the synthesis templates take a callable
+builtin type or an MPL sequence as the first template argument?]
+
+Yes, but it isn't immediately obvious as the set of possible MPL sequences
+isn't inherently disjoint from the set of callable builtin types.
+
+However, any attempt to make a builtin type work as an MPL sequence is
+a bad idea, because builtin types are accessible before the headers that
+make the type a sequence have been included, which can easily violate the
+ODR.
+
+[heading Why does the hidden [^this] parameter count for the
+function arity of member functions?]
+
+It was found preferable that the following condition holds:
+
+ mpl::size< __parameter_types<T> >::value == __function_arity<T>::value
+
+[heading Why ignore top-level cv-qualifiers on pointers?]
+
+A cv-qualified pointer is still a pointer. It usually doesn't matter and
+even if it does, it's a job for
+[@../../../type_traits/index.html Boost.TypeTraits].
+
+
+[endsect]
+
+[section:acknowledgements Acknowledgements]
+
+Thanks go to the following people for supporting the development of this
+library in one or the other way:
+
+* David Abrahams
+* Tom Brinkman
+* Aleksey Gurtovoy
+* Jody Hagins
+* Hartmut Kaiser
+* Andy Little
+* John Maddock
+* Paul Mensonides
+* Alexander Nasonov
+* Richard Smith
+* Rob Stewart
+* Jonathan Turkanis
+* Pavel Vozenilek
+* Steven Watanabe
+* K. Noel Belcourt
+
+[endsect]
+
diff --git a/doc/html/boost_functiontypes/about_tag_types.html b/doc/html/boost_functiontypes/about_tag_types.html
new file mode 100644
index 0000000..9000b58
--- /dev/null
+++ b/doc/html/boost_functiontypes/about_tag_types.html
@@ -0,0 +1,95 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>About Tag Types</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="prev" href="use_cases.html" title="Use Cases">
+<link rel="next" href="reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="use_cases.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_functiontypes.about_tag_types"></a><a class="link" href="about_tag_types.html" title="About Tag Types">About Tag Types</a>
+</h2></div></div></div>
+<p>
+ Boost.FunctionTypes uses tag types to encode properties that are not types
+ per se, such as calling convention or whether a function is variadic or cv-
+ qualified.
+ </p>
+<p>
+ These tags can be used to determine whether one property of a type has a particular
+ value.
+ </p>
+<pre class="programlisting"><span class="identifier">is_function</span><span class="special"><</span><span class="keyword">int</span><span class="special">(...),</span> <span class="identifier">variadic</span><span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == true
+</span><span class="identifier">is_function</span><span class="special"><</span><span class="keyword">int</span><span class="special">()</span> <span class="special">,</span> <span class="identifier">variadic</span><span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == false
+</span></pre>
+<p>
+ A compound property tag describes a combination of possible values of different
+ properties. The type <code class="literal">components<F></code>, where <code class="literal">F</code>
+ is a callable builtin type, is a compound property tag that describes <code class="literal">F</code>.
+ The <code class="literal">tag</code> class template can be used to combine property tags.
+ </p>
+<pre class="programlisting"><span class="identifier">tag</span><span class="special"><</span><span class="identifier">non_const</span><span class="special">,</span><span class="identifier">default_cc</span><span class="special">></span> <span class="comment">// combination of two properties
+</span></pre>
+<p>
+ When several values for the same property are specified in <code class="literal">tag</code>'s
+ argument list, only the rightmost one is used; others are ignored.
+ </p>
+<pre class="programlisting"><span class="identifier">tag</span><span class="special"><</span><span class="identifier">components</span><span class="special"><</span><span class="identifier">F</span><span class="special">>,</span> <span class="identifier">default_cc</span><span class="special">></span> <span class="comment">// overrides F's calling convention property
+</span></pre>
+<p>
+ When compound property tag is specified to analyse a type, all of its component
+ properties must match.
+ </p>
+<pre class="programlisting"><span class="identifier">is_member_function_pointer</span><span class="special"><</span> <span class="identifier">F</span><span class="special">,</span> <span class="identifier">tag</span><span class="special"><</span><span class="identifier">const_qualified</span><span class="special">,</span><span class="identifier">default_cc</span><span class="special">></span> <span class="special">>::</span><span class="identifier">value</span>
+<span class="comment">// true for
+</span><span class="comment">// F = void(a_class::*)() const
+</span><span class="comment">// false for
+</span><span class="comment">// F = void(a_class::*)()
+</span><span class="comment">// F = void(__fastcall a_class::*)() const
+</span></pre>
+<p>
+ Default values are selected for properties not specified by the tag in the
+ context of type synthesis.
+ </p>
+<pre class="programlisting"><span class="comment">// given S = mpl::vector<int,a_class const &>
+</span>
+<span class="identifier">member_function_pointer</span><span class="special"><</span><span class="identifier">S</span><span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is int (a_class::*)() const
+</span><span class="comment">// note: the cv-qualification is picked based on the class type,
+</span><span class="comment">// a nonvariadic signature and the default calling convention
+</span><span class="comment">// are used
+</span>
+<span class="identifier">member_function_pointer</span><span class="special"><</span><span class="identifier">S</span><span class="special">,</span><span class="identifier">non_const</span><span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is int (a_class::*)()
+</span><span class="comment">// no const qualification, as explicitly specified by the tag type
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="use_cases.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/acknowledgements.html b/doc/html/boost_functiontypes/acknowledgements.html
new file mode 100644
index 0000000..02e951e
--- /dev/null
+++ b/doc/html/boost_functiontypes/acknowledgements.html
@@ -0,0 +1,94 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="prev" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_functiontypes.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+ Thanks go to the following people for supporting the development of this library
+ in one or the other way:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ David Abrahams
+ </li>
+<li class="listitem">
+ Tom Brinkman
+ </li>
+<li class="listitem">
+ Aleksey Gurtovoy
+ </li>
+<li class="listitem">
+ Jody Hagins
+ </li>
+<li class="listitem">
+ Hartmut Kaiser
+ </li>
+<li class="listitem">
+ Andy Little
+ </li>
+<li class="listitem">
+ John Maddock
+ </li>
+<li class="listitem">
+ Paul Mensonides
+ </li>
+<li class="listitem">
+ Alexander Nasonov
+ </li>
+<li class="listitem">
+ Richard Smith
+ </li>
+<li class="listitem">
+ Rob Stewart
+ </li>
+<li class="listitem">
+ Jonathan Turkanis
+ </li>
+<li class="listitem">
+ Pavel Vozenilek
+ </li>
+<li class="listitem">
+ Steven Watanabe
+ </li>
+<li class="listitem">
+ K. Noel Belcourt
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/introduction.html b/doc/html/boost_functiontypes/introduction.html
new file mode 100644
index 0000000..ed7318a
--- /dev/null
+++ b/doc/html/boost_functiontypes/introduction.html
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="prev" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="next" href="use_cases.html" title="Use Cases">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="use_cases.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_functiontypes.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+ Boost.FunctionTypes provides functionality to classify, decompose and synthesize
+ function, function pointer, function reference and pointer to member types.
+ </p>
+<p>
+ We collectively refer to these types as <span class="emphasis"><em>callable builtin</em></span>
+ types.
+ </p>
+<p>
+ In particular, the library can be used to:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ test whether a type is a specific callable, builtin type,
+ </li>
+<li class="listitem">
+ extract all component properties from callable, builtin types, and
+ </li>
+<li class="listitem">
+ create callable, builtin types from specified properties.
+ </li>
+</ul></div>
+<p>
+ The library is designed to work well with other Boost libraries and uses well-accepted
+ concepts introduced by Boost and TR1.
+ </p>
+<p>
+ Templates that encapsulate boolean or numeric properties define a static member
+ constant called <code class="literal">value</code>.
+ </p>
+<pre class="programlisting"><a class="link" href="reference/classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">is_function_pointer</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == true
+</span>
+<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">value</span> <span class="comment">// == 1
+</span></pre>
+<p>
+ Templates that encapsulate properties that are single types contain a type
+ member called <code class="literal">type</code>.
+ </p>
+<pre class="programlisting"><a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">function_type</a><span class="special"><</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">></span> <span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is bool(int)
+</span>
+<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">result_type</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(&)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">>::</span><span class="identifier">type</span> <span class="comment">// is bool
+</span></pre>
+<p>
+ Templates that encapsulate properties that are type lists model an MPL-compatible
+ type sequence.
+ </p>
+<pre class="programlisting"><a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special"><</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">></span> <span class="comment">// models an MPL sequence
+</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="use_cases.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/rationale.html b/doc/html/boost_functiontypes/rationale.html
new file mode 100644
index 0000000..adc9dec
--- /dev/null
+++ b/doc/html/boost_functiontypes/rationale.html
@@ -0,0 +1,152 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rationale</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="prev" href="reference/macros.html" title="Macros">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/macros.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_functiontypes.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
+</h2></div></div></div>
+<a name="boost_functiontypes.rationale.error_handling_rationale"></a><h4>
+<a name="boost_functiontypes.rationale.error_handling_rationale-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.error_handling_rationale">Error
+ handling rationale</a>
+ </h4>
+<p>
+ The library does not define the required members of class templates in case
+ of an error. This technique causes the compiler to stop displaying diagnostics
+ in client code, at the point where the error actually is, instead of tracing
+ template instantiations into the implementation of the library.
+ </p>
+<p>
+ The library's components have limited error conditions, so problematic input
+ can be spotted easily.
+ </p>
+<a name="boost_functiontypes.rationale.why_mpl_sequences_"></a><h4>
+<a name="boost_functiontypes.rationale.why_mpl_sequences_-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_mpl_sequences_">Why MPL Sequences?</a>
+ </h4>
+<p>
+ MPL provides algorithms on Sequences, so transformations (such as turning by-value
+ parameter types into const references for optimized forwarding or computing
+ a signature to specialize <a href="../../../../function/index.html" target="_top"><code class="literal">boost::function</code></a>
+ after applying <a href="../../../../bind/index.html" target="_top"><code class="literal">boost::bind</code></a>)
+ can be expressed more easily. The MPL Sequence concept is compatible with several
+ other Boost libraries (most importantly <a href="../../../../fusion/index.html" target="_top">Fusion</a>),
+ so another reason is interoperability.
+ </p>
+<a name="boost_functiontypes.rationale.pointer_to_member_object_types"></a><h4>
+<a name="boost_functiontypes.rationale.pointer_to_member_object_types-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.pointer_to_member_object_types">Pointer
+ to member object types</a>
+ </h4>
+<p>
+ Despite their syntax, pointer to member object types can be seen as dereferencing
+ functionals.
+ </p>
+<a name="boost_functiontypes.rationale.the_classtransform_template_parameter"></a><h4>
+<a name="boost_functiontypes.rationale.the_classtransform_template_parameter-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.the_classtransform_template_parameter">The
+ ClassTransform template parameter</a>
+ </h4>
+<p>
+ <code class="literal">This</code>-pointer, <code class="literal">this</code>-reference or just
+ the object (or maybe even a smart pointer to the object) plus adjustments of
+ cv-qualification - all these cases have their place, somewhere and there is
+ no single best answer.
+ </p>
+<p>
+ Special treatment of the class type within the sequence can significantly complicate
+ client code. A custom <code class="literal">ClassTransform</code> argument allows the
+ client to adjust the class type before the sequence is formed and then treat
+ all parameters uniformly.
+ </p>
+<a name="boost_functiontypes.rationale.why_tag_types_"></a><h4>
+<a name="boost_functiontypes.rationale.why_tag_types_-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_tag_types_">Why tag types?</a>
+ </h4>
+<p>
+ Let's consider the alternatives.
+ </p>
+<p>
+ The first one is just using more templates so every property has to be asked
+ for explicitly. This approach results in more complicated client code if more
+ than one propery has to be checked and in a exponentially larger library interface.
+ </p>
+<p>
+ The second alternative is having the client pass in bit patterns via non-type
+ template parameters. The logic has to be performed by the client and there
+ are much more error conditions. Further, class templates with non-type template
+ parameters do not work within MPL lambda expressions and can cause problems
+ with older compilers.
+ </p>
+<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_"></a><h4>
+<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_">Is
+ it safe to have the synthesis templates take a callable builtin type or an
+ MPL sequence as the first template argument?</a>
+ </h4>
+<p>
+ Yes, but it isn't immediately obvious as the set of possible MPL sequences
+ isn't inherently disjoint from the set of callable builtin types.
+ </p>
+<p>
+ However, any attempt to make a builtin type work as an MPL sequence is a bad
+ idea, because builtin types are accessible before the headers that make the
+ type a sequence have been included, which can easily violate the ODR.
+ </p>
+<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_"></a><h4>
+<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_">Why
+ does the hidden <code class="literal">this</code> parameter count for the function arity
+ of member functions?</a>
+ </h4>
+<p>
+ It was found preferable that the following condition holds:
+ </p>
+<pre class="programlisting"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">size</span><span class="special"><</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">>::</span><span class="identifier">value</span> <span class="special">==</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">value</span>
+</pre>
+<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_"></a><h4>
+<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_-heading"></a>
+ <a class="link" href="rationale.html#boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_">Why
+ ignore top-level cv-qualifiers on pointers?</a>
+ </h4>
+<p>
+ A cv-qualified pointer is still a pointer. It usually doesn't matter and even
+ if it does, it's a job for <a href="../../../../type_traits/index.html" target="_top">Boost.TypeTraits</a>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/macros.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/reference.html b/doc/html/boost_functiontypes/reference.html
new file mode 100644
index 0000000..238d606
--- /dev/null
+++ b/doc/html/boost_functiontypes/reference.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="prev" href="about_tag_types.html" title="About Tag Types">
+<link rel="next" href="reference/classification.html" title="Class templates for type classification">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="about_tag_types.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/classification.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_functiontypes.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="reference/classification.html">Class templates
+ for type classification</a></span></dt>
+<dt><span class="section"><a href="reference/decomposition.html">Class templates
+ for type decomposition</a></span></dt>
+<dt><span class="section"><a href="reference/synthesis.html">Class templates
+ for type synthesis</a></span></dt>
+<dt><span class="section"><a href="reference/tag_types.html">Tag Types</a></span></dt>
+<dt><span class="section"><a href="reference/macros.html">Macros</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="about_tag_types.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/classification.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/reference/classification.html b/doc/html/boost_functiontypes/reference/classification.html
new file mode 100644
index 0000000..bb20af5
--- /dev/null
+++ b/doc/html/boost_functiontypes/reference/classification.html
@@ -0,0 +1,371 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class templates for type classification</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="decomposition.html" title="Class templates for type decomposition">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="decomposition.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_functiontypes.reference.classification"></a><a class="link" href="classification.html" title="Class templates for type classification">Class templates
+ for type classification</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_function">is_function</a></span></dt>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_function_pointer">is_function_pointer</a></span></dt>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_function_reference">is_function_reference</a></span></dt>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_member_pointer">is_member_pointer</a></span></dt>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer">is_member_object_pointer</a></span></dt>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer">is_member_function_pointer</a></span></dt>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin">is_callable_builtin</a></span></dt>
+<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin">is_nonmember_callable_builtin</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_function"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function" title="is_function">is_function</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_function</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties required for a positive result
+ </p></dd>
+<dt><span class="term"><code class="literal">is_function<T,Tag></code></span></dt>
+<dd><p>
+ Predicate value as <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_function<T,Tag>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a function, possibly with additional
+ properties as specified by a property tag.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">is_function_pointer</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_function_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_function_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties required for a positive result
+ </p></dd>
+<dt><span class="term"><code class="literal">is_function_pointer<T,Tag></code></span></dt>
+<dd><p>
+ Predicate value <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_function_pointer<T,Tag>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a function pointer, possibly with additional
+ properties as specified by a property tag.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_function_reference"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_reference" title="is_function_reference">is_function_reference</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_function_reference</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_function_reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties required for a positive result
+ </p></dd>
+<dt><span class="term"><code class="literal">is_function_reference<T,Tag></code></span></dt>
+<dd><p>
+ Predicate value <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_function_reference<T,Tag>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a function reference, possibly with
+ additional properties as specified by a property tag.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_member_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_pointer" title="is_member_pointer">is_member_pointer</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_member_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_member_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties required for a positive result
+ </p></dd>
+<dt><span class="term"><code class="literal">is_member_pointer<T,Tag></code></span></dt>
+<dd><p>
+ Predicate value <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_member_pointer<T,Tag>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a pointer to member (object or function)
+ type, possibly with additional properties as specified by a property tag.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_member_object_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer" title="is_member_object_pointer">is_member_object_pointer</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_member_object_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_member_object_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">is_member_object_pointer<T></code></span></dt>
+<dd><p>
+ Predicate value <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_member_object_pointer<T>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a pointer to member object type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_member_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer" title="is_member_function_pointer">is_member_function_pointer</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_member_function_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_member_function_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties required for a positive result
+ </p></dd>
+<dt><span class="term"><code class="literal">is_member_function_pointer<T,Tag></code></span></dt>
+<dd><p>
+ Predicate value <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_member_function_pointer<T,Tag>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a member function pointer, possibly
+ with additional properties as specified by a property tag.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin" title="is_callable_builtin">is_callable_builtin</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_callable_builtin</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_callable_builtin</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties required for a positive result
+ </p></dd>
+<dt><span class="term"><code class="literal">is_callable_builtin<T,Tag></code></span></dt>
+<dd><p>
+ Predicate value as <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_callable_builtin<T,Tag>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a callable builtin, possibly with additional
+ properties as specified by a property tag.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.classification.is_nonmember_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin" title="is_nonmember_callable_builtin">is_nonmember_callable_builtin</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_nonmember_callable_builtin</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">is_nonmember_callable_builtin</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties required for a positive result
+ </p></dd>
+<dt><span class="term"><code class="literal">is_nonmember_callable_builtin<T,Tag></code></span></dt>
+<dd><p>
+ Predicate value as <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">is_nonmember_callable_builtin<T,Tag>::value</code></span></dt>
+<dd><p>
+ Constant boolean value
+ </p></dd>
+</dl>
+</div>
+<p>
+ Determines whether a given type is a callable builtin that is not a member
+ function pointer, possibly with additional properties as specified by a
+ property tag.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="decomposition.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/reference/decomposition.html b/doc/html/boost_functiontypes/reference/decomposition.html
new file mode 100644
index 0000000..9b57cb7
--- /dev/null
+++ b/doc/html/boost_functiontypes/reference/decomposition.html
@@ -0,0 +1,218 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class templates for type decomposition</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="classification.html" title="Class templates for type classification">
+<link rel="next" href="synthesis.html" title="Class templates for type synthesis">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="classification.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="synthesis.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_functiontypes.reference.decomposition"></a><a class="link" href="decomposition.html" title="Class templates for type decomposition">Class templates
+ for type decomposition</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="decomposition.html#boost_functiontypes.reference.decomposition.result_type">result_type</a></span></dt>
+<dt><span class="section"><a href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types">parameter_types</a></span></dt>
+<dt><span class="section"><a href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity">function_arity</a></span></dt>
+<dt><span class="section"><a href="decomposition.html#boost_functiontypes.reference.decomposition.components">components</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.decomposition.result_type"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">result_type</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">result_type</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">result_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">F</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">result_type<F>::type</code></span></dt>
+<dd><p>
+ Result type of <code class="literal">F</code>
+ </p></dd>
+</dl>
+</div>
+<p>
+ Extracts the result type of a callable, builtin type.
+ </p>
+<p>
+ If <code class="literal">F</code> is no callable, builtin type, any attempt to access
+ the <code class="literal">type</code> member results in a compile error.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.decomposition.parameter_types"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special"><</span><span class="identifier">_</span><span class="special">></span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">parameter_types</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">parameter_types</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">F</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">ClassTransform</code></span></dt>
+<dd><p>
+ <a href="../../../../../mpl/index.html" target="_top">MPL</a> - <a href="../../../../../mpl/doc/refmanual/lambda-expression.html" target="_top">Lambda
+ Expression</a> to transform the class type if <code class="literal">F</code>
+ is a member function pointer
+ </p></dd>
+<dt><span class="term"><code class="literal">parameter_types<F,ClassTransform></code></span></dt>
+<dd><p>
+ <a href="../../../../../mpl/index.html" target="_top">MPL</a> - <a href="../../../../../mpl/doc/refmanual/front-extensible-sequence.html" target="_top">Front</a>
+ / <a href="../../../../../mpl/doc/refmanual/back-extensible-sequence.html" target="_top">Back
+ </a><a href="../../../../../mpl/doc/refmanual/extensible-sequence.html" target="_top">Extensible
+ </a><a href="../../../../../mpl/doc/refmanual/random-access-sequence.html" target="_top">Random
+ Access Sequence</a> of parameter types
+ </p></dd>
+</dl>
+</div>
+<p>
+ Extracts the parameter types of a callable, builtin type.
+ </p>
+<p>
+ If <code class="literal">F</code> is no callable, builtin type, any attempt to access
+ the sequence results in a compile error.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.decomposition.function_arity"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">function_arity</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">function_arity</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">F</code></span></dt>
+<dd><p>
+ Callable builtin type
+ </p></dd>
+<dt><span class="term"><code class="literal">function_arity<F></code></span></dt>
+<dd><p>
+ Function arity as <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant</a>
+ </p></dd>
+<dt><span class="term"><code class="literal">function_arity<F>::value</code></span></dt>
+<dd><p>
+ Constant value of the function arity
+ </p></dd>
+</dl>
+</div>
+<p>
+ Extracts the function arity, that is the number of parameters. The hidden
+ <code class="literal">this</code> of member function pointers counts, in other words
+ the arity value is always greater than or equal to one if <code class="literal">F</code>
+ is a member function pointer.
+ </p>
+<p>
+ If <code class="literal">F</code> is no callable, builtin type, any attempt to access
+ the value results in a compile error.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.decomposition.components"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.components" title="components">components</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special"><</span><span class="identifier">_</span><span class="special">></span> <span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">components</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">components</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">T</code></span></dt>
+<dd><p>
+ Type to analyze
+ </p></dd>
+<dt><span class="term"><code class="literal">ClassTransform</code></span></dt>
+<dd><p>
+ <a href="../../../../../mpl/index.html" target="_top">MPL</a> - <a href="../../../../../mpl/doc/refmanual/lambda-expression.html" target="_top">Lambda
+ Expression</a> to transform the class type if <code class="literal">T</code>
+ is a member function pointer
+ </p></dd>
+<dt><span class="term"><code class="literal">components<T,ClassTransform></code></span></dt>
+<dd><p>
+ <a href="../../../../../mpl/index.html" target="_top">MPL</a> - <a href="../../../../../mpl/doc/refmanual/front-extensible-sequence.html" target="_top">Front</a>
+ / <a href="../../../../../mpl/doc/refmanual/back-extensible-sequence.html" target="_top">Back
+ </a><a href="../../../../../mpl/doc/refmanual/extensible-sequence.html" target="_top">Extensible
+ </a><a href="../../../../../mpl/doc/refmanual/random-access-sequence.html" target="_top">Random
+ Access Sequence</a> of all component types and property tag
+ </p></dd>
+<dt><span class="term"><code class="literal">components<T,ClassTransform>::types</code></span></dt>
+<dd><p>
+ Decorated MPL Sequence, exposed for optimization
+ </p></dd>
+</dl>
+</div>
+<p>
+ Extracts all properties of a callable builtin type, that is the result
+ type, followed by the parameter types (including the type of <code class="literal">this</code>
+ for member function pointers).
+ </p>
+<p>
+ If <code class="literal">T</code> is no callable builtin type, the component types
+ are an empty sequence and the Tag's meaning is equivalent to the <code class="literal"><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="classification.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="synthesis.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/reference/macros.html b/doc/html/boost_functiontypes/reference/macros.html
new file mode 100644
index 0000000..563a651
--- /dev/null
+++ b/doc/html/boost_functiontypes/reference/macros.html
@@ -0,0 +1,226 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macros</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="tag_types.html" title="Tag Types">
+<link rel="next" href="../rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tag_types.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../rationale.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_functiontypes.reference.macros"></a><a class="link" href="macros.html" title="Macros">Macros</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY">BOOST_FT_MAX_ARITY</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES">BOOST_FT_CC_NAMES</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC">BOOST_FT_CC_*</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs">BOOST_FT_COMMON_X86_CCs</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX">BOOST_FT_SYNTAX</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM">BOOST_FT_NULLARY_PARAM</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT">BOOST_FT_NO_CV_FUNC_SUPPORT</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE">BOOST_FT_PREPROCESSING_MODE</a></span></dt>
+<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING">BOOST_FT_CC_PREPROCESSING</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY" title="BOOST_FT_MAX_ARITY">BOOST_FT_MAX_ARITY</a>
+</h4></div></div></div>
+<p>
+ Expands to a numeric value that describes the maximum function arity supported
+ by the library.
+ </p>
+<p>
+ Defaults to 20 if not explicitly defined by the user before inclusion of
+ the first library header.
+ </p>
+</div>
+<p>
+ <span class="bold"><strong>The following macros do not need to be defined, unless
+ to configure the library to work with a compiler and/or calling convention
+ not covered by the auto-detection mechanism in <code class="literal">boost/function_types/config/compiler.hpp</code>.</strong></span>
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES">BOOST_FT_CC_NAMES</a>
+</h4></div></div></div>
+<p>
+ Expands to a <a href="../../../../../preprocessor/doc/data/sequences.html" target="_top">sequence</a>
+ of ternary <a href="../../../../../preprocessor/doc/data/tuples.html" target="_top">tuples</a>
+ (these data types are defined in the <a href="../../../../../preprocessor/doc/index.html" target="_top">documentation
+ of the Boost Preprocessor library</a>). Each sequence element describes
+ one calling convention specifier. The first element in each tuple is the
+ macro suffix for <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*"><code class="literal">BOOST_FT_CC_*</code></a>,
+ the second element is the name of the tag that describes the calling convention
+ and the third is the name of the specifier. The specifier is allowed to
+ be an empty string, so the third tuple element is either <a href="../../../../../preprocessor/doc/ref/empty.html" target="_top"><code class="literal">BOOST_PP_EMPTY</code></a>
+ or <a href="../../../../../preprocessor/doc/ref/identity.html" target="_top"><code class="literal">BOOST_PP_IDENTITY</code></a><code class="literal">(<span class="emphasis"><em>name</em></span>)</code>.
+ </p>
+<p>
+ Define this macro to extend the set of possible names for custom calling
+ conventions. The macro expands to nothing by default.
+ </p>
+<p>
+ The following names are predefined by the library and must not occur in
+ the definition of <code class="literal">BOOST_FT_CC_NAMES</code>:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FT_BUILTIN_CC_NAMES</span> <span class="special">\</span>
+ <span class="special">((</span> <span class="identifier">IMPLICIT</span> <span class="special">,</span> <span class="identifier">implicit_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_EMPTY</span> <span class="special">))\</span>
+ <span class="special">((</span> <span class="identifier">CDECL</span> <span class="special">,</span> <span class="identifier">cdecl_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_IDENTITY</span><span class="special">(</span><span class="identifier">__cdecl</span> <span class="special">)</span> <span class="special">))\</span>
+ <span class="special">((</span> <span class="identifier">STDCALL</span> <span class="special">,</span> <span class="identifier">stdcall_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_IDENTITY</span><span class="special">(</span><span class="identifier">__stdcall</span> <span class="special">)</span> <span class="special">))\</span>
+ <span class="special">((</span> <span class="identifier">PASCAL</span> <span class="special">,</span> <span class="identifier">pascal_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_IDENTITY</span><span class="special">(</span><span class="identifier">pascal</span> <span class="special">)</span> <span class="special">))\</span>
+ <span class="special">((</span> <span class="identifier">FASTCALL</span> <span class="special">,</span> <span class="identifier">fastcall_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_IDENTITY</span><span class="special">(</span><span class="identifier">__fastcall</span><span class="special">)</span> <span class="special">))\</span>
+ <span class="special">((</span> <span class="identifier">CLRCALL</span> <span class="special">,</span> <span class="identifier">clrcall_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_IDENTITY</span><span class="special">(</span><span class="identifier">__clrcall</span> <span class="special">)</span> <span class="special">))\</span>
+ <span class="special">((</span> <span class="identifier">THISCALL</span> <span class="special">,</span> <span class="identifier">thiscall_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_IDENTITY</span><span class="special">(</span><span class="identifier">__thiscall</span><span class="special">)</span> <span class="special">))\</span>
+ <span class="special">((</span> <span class="identifier">IMPLICIT_THISCALL</span> <span class="special">,</span> <span class="identifier">thiscall_cc</span> <span class="special">,</span> <span class="identifier">BOOST_PP_EMPTY</span> <span class="special">))</span>
+<span class="comment">// Don't get confused by the last line, here (thiscall can't be specified
+</span><span class="comment">// explicitly prior to MSVC 8).
+</span></pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*">BOOST_FT_CC_*</a>
+</h4></div></div></div>
+<p>
+ Enables a specific calling convention. * denotes the macro suffix, as defined
+ by <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
+ or <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_BUILTIN_CC_NAMES</code></a>.
+ </p>
+<p>
+ The macro expands to a list of restrictions, separated by the <code class="literal">|</code>
+ character. Possible items are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ callable_builtin
+ </li>
+<li class="listitem">
+ member
+ </li>
+<li class="listitem">
+ non_member
+ </li>
+<li class="listitem">
+ variadic
+ </li>
+<li class="listitem">
+ non_variadic
+ </li>
+</ul></div>
+<p>
+ If no such macro is defined for a particular calling convention, it is
+ disabled. Example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FT_CC_STDCALL</span> <span class="identifier">non_variadic</span><span class="special">|</span><span class="identifier">callable_builtin</span>
+<span class="comment">// enables stdcall calling convention for all non-variadic,
+</span><span class="comment">// callable, builtin types
+</span></pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs" title="BOOST_FT_COMMON_X86_CCs">BOOST_FT_COMMON_X86_CCs</a>
+</h4></div></div></div>
+<p>
+ Defining this macro causes the following macros to be defined, if not defined
+ already:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FT_CC_CDECL</span> <span class="identifier">BOOST_FT_COMMON_X86_CCs</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_FT_CC_STDCALL</span> <span class="identifier">non_variadic</span><span class="special">|</span><span class="identifier">BOOST_FT_COMMON_X86_CCs</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_FT_CC_FASTCALL</span> <span class="identifier">non_variadic</span><span class="special">|</span><span class="identifier">BOOST_FT_COMMON_X86_CCs</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_SYNTAX"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX" title="BOOST_FT_SYNTAX">BOOST_FT_SYNTAX</a>
+</h4></div></div></div>
+<p>
+ This macro allows to change the syntax of callable builtin types. It is
+ useful to handle the compiler specific placement of the calling convention
+ specifier.
+ </p>
+<p>
+ The default definition is as follows:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FT_SYNTAX</span><span class="special">(</span><span class="identifier">result</span><span class="special">,</span><span class="identifier">lparen</span><span class="special">,</span><span class="identifier">cc_spec</span><span class="special">,</span><span class="identifier">type_mod</span><span class="special">,</span><span class="identifier">name</span><span class="special">,</span><span class="identifier">rparen</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">result</span><span class="special">()</span> <span class="identifier">lparen</span><span class="special">()</span> <span class="identifier">cc_spec</span><span class="special">()</span> <span class="identifier">type_mod</span><span class="special">()</span> <span class="identifier">name</span><span class="special">()</span> <span class="identifier">rparen</span><span class="special">()</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM" title="BOOST_FT_NULLARY_PARAM">BOOST_FT_NULLARY_PARAM</a>
+</h4></div></div></div>
+<p>
+ Set to <code class="literal">void</code> for compilers that insist on a <code class="literal">void</code>
+ parameter for nullary function types, empty by default.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT" title="BOOST_FT_NO_CV_FUNC_SUPPORT">BOOST_FT_NO_CV_FUNC_SUPPORT</a>
+</h4></div></div></div>
+<p>
+ Disables support for cv-qualified function types. Cv-qualified function
+ types are illegal by the current standard version, but there is a pending
+ defect report on that issue. It defaults to <code class="literal">1</code> until
+ the standard changes, setting this macro to <code class="literal">0</code> may not
+ work.
+ </p>
+</div>
+<p>
+ <span class="bold"><strong>The following macros are useful for testing when changing
+ the source code of the library.</strong></span>
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE" title="BOOST_FT_PREPROCESSING_MODE">BOOST_FT_PREPROCESSING_MODE</a>
+</h4></div></div></div>
+<p>
+ Makes the compiler preprocess as much as possible of the library code (rather
+ than loading already-preprocessed header files) if defined.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING" title="BOOST_FT_CC_PREPROCESSING">BOOST_FT_CC_PREPROCESSING</a>
+</h4></div></div></div>
+<p>
+ Makes the compiler preprocess the loop over possible names for custom calling
+ conventions (rather than loading an already-preprocessed header file) if
+ defined.
+ </p>
+<p>
+ This macro is defined automatically if <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
+ has been defined.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tag_types.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../rationale.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/reference/synthesis.html b/doc/html/boost_functiontypes/reference/synthesis.html
new file mode 100644
index 0000000..ae914f7
--- /dev/null
+++ b/doc/html/boost_functiontypes/reference/synthesis.html
@@ -0,0 +1,213 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Class templates for type synthesis</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="decomposition.html" title="Class templates for type decomposition">
+<link rel="next" href="tag_types.html" title="Tag Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="decomposition.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tag_types.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_functiontypes.reference.synthesis"></a><a class="link" href="synthesis.html" title="Class templates for type synthesis">Class templates
+ for type synthesis</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_type">function_type</a></span></dt>
+<dt><span class="section"><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer">function_pointer</a></span></dt>
+<dt><span class="section"><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference">function_reference</a></span></dt>
+<dt><span class="section"><a href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer">member_function_pointer</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.synthesis.function_type"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">function_type</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">function_type</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">function_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">Types</code></span></dt>
+<dd><p>
+ Component types in form of an <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/forward-sequence.html" target="_top">Forward
+ Sequence</a> or another callable, builtin type
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties
+ </p></dd>
+<dt><span class="term"><code class="literal">function_type<Types,Tag>::type</code></span></dt>
+<dd><p>
+ Synthesized type
+ </p></dd>
+</dl>
+</div>
+<p>
+ Synthesizes a function type from given properties.
+ </p>
+<p>
+ If the template parameters do not describe a valid type, any attempt to
+ access the <code class="literal">type</code> member will result in a compile error.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.synthesis.function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">function_pointer</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">function_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">function_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">Types</code></span></dt>
+<dd><p>
+ Component types in form of an <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/forward-sequence.html" target="_top">Forward
+ Sequence</a> or another callable, builtin type
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties
+ </p></dd>
+<dt><span class="term"><code class="literal">function_pointer<Types,Tag>::type</code></span></dt>
+<dd><p>
+ Synthesized type
+ </p></dd>
+</dl>
+</div>
+<p>
+ Synthesizes a function pointer type from given properties.
+ </p>
+<p>
+ If the template parameters do not describe a valid type, any attempt to
+ access the <code class="literal">type</code> member will result in a compile error.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.synthesis.function_reference"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference" title="function_reference">function_reference</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">function_reference</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">function_reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">Types</code></span></dt>
+<dd><p>
+ Component types in form of an <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/forward-sequence.html" target="_top">Forward
+ Sequence</a> or another callable, builtin type
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties
+ </p></dd>
+<dt><span class="term"><code class="literal">function_reference<Types,Tag>::type</code></span></dt>
+<dd><p>
+ Synthesized type
+ </p></dd>
+</dl>
+</div>
+<p>
+ Synthesizes a function reference type from given properties.
+ </p>
+<p>
+ If the template parameters do not describe a valid type, any attempt to
+ access the <code class="literal">type</code> member will result in a compile error.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.synthesis.member_function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer" title="member_function_pointer">member_function_pointer</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">member_function_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">member_function_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">Types</code></span></dt>
+<dd><p>
+ Component types in form of an <a href="../../../../../mpl/index.html" target="_top">MPL</a>
+ - <a href="../../../../../mpl/doc/refmanual/forward-sequence.html" target="_top">Forward
+ Sequence</a> or another callable, builtin type
+ </p></dd>
+<dt><span class="term"><code class="literal">Tag</code></span></dt>
+<dd><p>
+ Further properties
+ </p></dd>
+<dt><span class="term"><code class="literal">member_function_pointer<Types,Tag>::type</code></span></dt>
+<dd><p>
+ Synthesized type
+ </p></dd>
+</dl>
+</div>
+<p>
+ Synthesizes a member function pointer type from given properties.
+ </p>
+<p>
+ An optional reference or possibly cv-qualified pointer is removed from
+ the second type in the sequence to determine the the class type. The cv-qualification
+ of the resulting type applies to the member function, unless otherwise
+ explicitly specified by the property tag.
+ </p>
+<p>
+ If the template parameters do not describe a valid type, any attempt to
+ access the <code class="literal">type</code> member will result in a compile error.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="decomposition.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tag_types.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/reference/tag_types.html b/doc/html/boost_functiontypes/reference/tag_types.html
new file mode 100644
index 0000000..c213fdb
--- /dev/null
+++ b/doc/html/boost_functiontypes/reference/tag_types.html
@@ -0,0 +1,279 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tag Types</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="synthesis.html" title="Class templates for type synthesis">
+<link rel="next" href="macros.html" title="Macros">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="synthesis.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="macros.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_functiontypes.reference.tag_types"></a><a class="link" href="tag_types.html" title="Tag Types">Tag Types</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.variadic">variadic</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic">non_variadic</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc">default_cc</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified">const_qualified</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_const">non_const</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified">volatile_qualified</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile">non_volatile</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_cv">non_cv</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile">const_non_volatile</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const">volatile_non_const</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied">cv_qualfied</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag">null_tag</a></span></dt>
+<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.tag">tag</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.variadic" title="variadic">variadic</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">variadic</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type takes a variable number of arguments through
+ an ellipsis parameter (such as <code class="literal">printf</code>).
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.non_variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic" title="non_variadic">non_variadic</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_variadic</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type does not have an ellipsis parameter.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.default_cc"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc" title="default_cc">default_cc</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">default_cc</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type encodes the default calling convention.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.const_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified" title="const_qualified">const_qualified</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_qualified</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is const qualified.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_const" title="non_const">non_const</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_const</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is not const qualified.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.volatile_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified" title="volatile_qualified">volatile_qualified</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_qualified</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is volatile qualified.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile" title="non_volatile">non_volatile</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_volatile</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is not volatile qualified.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.non_cv"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_cv" title="non_cv">non_cv</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_cv</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is neither const nor volatile qualified. Equivalent
+ to <code class="computeroutput"><span class="identifier">__tag</span><span class="special"><</span><span class="identifier">__non_const</span><span class="special">,</span><span class="identifier">__non_volatile</span><span class="special">></span></code>,
+ but involves fewer template instantiations when evaluated.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.const_non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile" title="const_non_volatile">const_non_volatile</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_non_volatile</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is const but not volatile qualified. Equivalent
+ to <code class="computeroutput"><span class="identifier">__tag</span><span class="special"><</span><span class="identifier">__const_qualified</span><span class="special">,</span><span class="identifier">__non_volatile</span><span class="special">></span></code>,
+ but involves fewer template instantiations when evaluated.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.volatile_non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const" title="volatile_non_const">volatile_non_const</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_non_const</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is volatile but not const qualified. Equivalent
+ to <code class="computeroutput"><span class="identifier">__tag</span><span class="special"><</span><span class="identifier">__volatile_qualified</span><span class="special">,</span><span class="identifier">__non_const</span><span class="special">></span></code>,
+ but involves fewer template instantiations when evaluated.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.cv_qualfied"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied" title="cv_qualfied">cv_qualfied</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">cv_qualified</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States that a function type is both const and volatile qualified. Equivalent
+ to <code class="computeroutput"><span class="identifier">__tag</span><span class="special"><</span><span class="identifier">__const_qualified</span><span class="special">,</span><span class="identifier">__volatile_qualified</span><span class="special">></span></code>,
+ but involves fewer template instantiations when evaluated.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.null_tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">null_tag</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ States nothing.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_functiontypes.reference.tag_types.tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.tag" title="tag">tag</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Tag1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag2</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">Tag3</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag4</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>Header</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">property_tags</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="literal">Tag<span class="emphasis"><em>N</em></span></code></span></dt>
+<dd><p>
+ Property tag
+ </p></dd>
+<dt><span class="term"><code class="literal">tag<Tag1,Tag2...></code></span></dt>
+<dd><p>
+ Compound property tag
+ </p></dd>
+</dl>
+</div>
+<p>
+ Combination of up to four property tags. If the arguments describe different
+ values for the same property the value of the rightmost argument is used.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="synthesis.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="macros.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_functiontypes/use_cases.html b/doc/html/boost_functiontypes/use_cases.html
new file mode 100644
index 0000000..5ec5477
--- /dev/null
+++ b/doc/html/boost_functiontypes/use_cases.html
@@ -0,0 +1,175 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Use Cases</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="about_tag_types.html" title="About Tag Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="about_tag_types.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_functiontypes.use_cases"></a><a class="link" href="use_cases.html" title="Use Cases">Use Cases</a>
+</h2></div></div></div>
+<p>
+ Generic libraries that accept callable arguments are common in C++. Accepting
+ a callable argument of builin type often involves a lot of repetitive code
+ because the accepting function is overloaded for different function arities.
+ Further, member functions may have <code class="literal">const</code>/<code class="literal">volatile</code>-qualifiers,
+ a function may take a variable number of (additional, POD-typed) arguments
+ (such as <code class="literal">printf</code>) and several C++ implementations encode
+ a calling convention with each function's type to allow calls across language
+ or (sub-)system boundaries.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(*</span> <span class="identifier">func</span><span class="special">)());</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(&</span> <span class="identifier">func</span><span class="special">)());</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)());</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)()</span> <span class="keyword">const</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)()</span> <span class="keyword">volatile</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)()</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(*</span> <span class="identifier">func</span><span class="special">)(...));</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(&</span> <span class="identifier">func</span><span class="special">)(...));</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)(...));</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)(...)</span> <span class="keyword">const</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)(...)</span> <span class="keyword">volatile</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(</span><span class="identifier">C</span><span class="special">::*</span> <span class="identifier">func</span><span class="special">)(...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">);</span>
+
+<span class="comment">// ...
+</span>
+<span class="comment">// needs to be repeated for every additional function parameter
+</span><span class="comment">// times the number of possible calling conventions
+</span></pre>
+<p>
+ The "overloading approach" obviously does not scale well: There might
+ be several functions that accept callable arguments in one library and client
+ code might end up using several libraries that use this pattern. On the developer
+ side, library developers spend their time solving the same problem, working
+ around the same portability issues, and apply similar optimizations to keep
+ the compilation time down.
+ </p>
+<p>
+ Using Boost.FunctionTypes it is possible to write a single function template
+ instead:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// ... use Boost.FunctionTypes to analyse F
+</span><span class="special">}</span>
+</pre>
+<p>
+ The combination with a tuples library that provides an invoker component, such
+ as <a href="../../../../fusion/index.html" target="_top">Boost.Fusion</a>, allows to
+ build flexible callback facilities that are entirely free of repetitive code
+ as shown by the <a href="../../../../function_types/example/interpreter.hpp" target="_top">interpreter
+ example</a>.
+ </p>
+<p>
+ When taking the address of an overloaded function or function template, the
+ type of the function must be known from the context the expression is used
+ in. The code below shows three examples for choosing the <code class="literal">float(float)</code>
+ overload of <code class="literal">std::abs</code>.
+ </p>
+<pre class="programlisting"><span class="keyword">float</span> <span class="special">(*</span><span class="identifier">ptr_absf</span><span class="special">)(</span><span class="keyword">float</span><span class="special">)</span> <span class="special">=</span> <span class="special">&</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">abs</span><span class="special">;</span>
+
+
+<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">float</span><span class="special">(*</span><span class="identifier">func</span><span class="special">)(</span><span class="keyword">float</span><span class="special">));</span>
+
+<span class="keyword">void</span> <span class="identifier">bar</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">foo</span><span class="special">(&</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">abs</span><span class="special">);</span>
+<span class="special">}</span>
+
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">float</span><span class="special">(*)(</span><span class="keyword">float</span><span class="special">)>(&</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">abs</span><span class="special">));</span>
+</pre>
+<p>
+ The library's type synthesis capabilities can be used to automate overload
+ selection and instantiation of function templates. Given an overloaded function
+ template
+ </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">></span>
+<span class="identifier">R</span> <span class="identifier">overloaded</span><span class="special">(</span><span class="identifier">T0</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">></span>
+<span class="identifier">R</span> <span class="identifier">overloaded</span><span class="special">(</span><span class="identifier">T0</span><span class="special">,</span><span class="identifier">T1</span><span class="special">);</span>
+
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">.</span> <span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">></span>
+<span class="identifier">R</span> <span class="identifier">overloaded</span><span class="special">(</span><span class="identifier">T0</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">);</span>
+</pre>
+<p>
+ we can pick any of the three overloads and instantiate the template with template
+ arguments from a type sequence in a single expression:
+ </p>
+<pre class="programlisting"><span class="keyword">static_cast</span><span class="special"><</span><a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">function_pointer</a><span class="special"><</span><span class="identifier">Seq</span><span class="special">>::</span><span class="identifier">type</span><span class="special">>(&</span> <span class="identifier">overloaded</span><span class="special">)</span>
+</pre>
+<p>
+ This technique can be occasionally more flexible than template argument deduction
+ from a function call because the exact types from the sequence are used to
+ specialize the template (including possibly cv-qualified reference types and
+ the result type). It is applied twice in the <a href="../../../../function_types/example/interface.hpp" target="_top">interface
+ example</a>.
+ </p>
+<p>
+ Another interersting property of callable, builtin types is that they can be
+ valid types for non-type template parameters. This way, a function can be pinpointed
+ at compile time, allowing the compiler to eliminate the call by inlining. The
+ <a href="../../../../function_types/example/fast_mem_fn.hpp" target="_top">fast_mem_fn example</a>
+ exploits this characteristic and implements a potentially inlining version
+ of <a href="../../../../bind/mem_fn.html" target="_top">boost::mem_fn</a> limited to
+ member functions that are known at compile time.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2004-2007 Tobias
+ Schwinger<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="about_tag_types.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644
index 0000000..670c9df
--- /dev/null
+++ b/doc/html/index.html
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 1. Boost.FunctionTypes 2.5</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Chapter 1. Boost.FunctionTypes 2.5">
+<link rel="next" href="boost_functiontypes/introduction.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_functiontypes/introduction.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost_functiontypes"></a>Chapter 1. Boost.FunctionTypes 2.5</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Tobias</span> <span class="surname">Schwinger</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2004-2007 Tobias
+ Schwinger</p></div>
+<div><div class="legalnotice">
+<a name="id768638"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"><a href="boost_functiontypes/introduction.html">Introduction</a></span></dt>
+<dt><span class="section"><a href="boost_functiontypes/use_cases.html">Use Cases</a></span></dt>
+<dt><span class="section"><a href="boost_functiontypes/about_tag_types.html">About Tag Types</a></span></dt>
+<dt><span class="section"><a href="boost_functiontypes/reference.html">Reference</a></span></dt>
+<dt><span class="section"><a href="boost_functiontypes/rationale.html">Rationale</a></span></dt>
+<dt><span class="section"><a href="boost_functiontypes/acknowledgements.html">Acknowledgements</a></span></dt>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: April 09, 2008 at 18:26:31 +0100</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_functiontypes/introduction.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>