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&#160;1.&#160;Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;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">&lt;</span><span class="keyword">int</span><span class="special">(...),</span> <span class="identifier">variadic</span><span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == true
+</span><span class="identifier">is_function</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">()</span>   <span class="special">,</span> <span class="identifier">variadic</span><span class="special">&gt;::</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&lt;F&gt;</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">&lt;</span><span class="identifier">non_const</span><span class="special">,</span><span class="identifier">default_cc</span><span class="special">&gt;</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">&lt;</span><span class="identifier">components</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;,</span> <span class="identifier">default_cc</span><span class="special">&gt;</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">&lt;</span> <span class="identifier">F</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">const_qualified</span><span class="special">,</span><span class="identifier">default_cc</span><span class="special">&gt;</span> <span class="special">&gt;::</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&lt;int,a_class const &amp;&gt;
+</span>
+<span class="identifier">member_function_pointer</span><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</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">&lt;</span><span class="identifier">S</span><span class="special">,</span><span class="identifier">non_const</span><span class="special">&gt;::</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 &#169; 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&#160;1.&#160;Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;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 &#169; 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&#160;1.&#160;Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.FunctionTypes 2.5">
+<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;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">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</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">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</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">&lt;</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;::</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">&lt;</span> <span class="keyword">bool</span><span class="special">(&amp;)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</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">&lt;</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;</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 &#169; 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&#160;1.&#160;Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;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">&lt;</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;::</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</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 &#169; 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&#160;1.&#160;Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;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 &#169; 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&#160;1.&#160;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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;T,Tag&gt;</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&lt;T,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;T,Tag&gt;</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&lt;T,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;T,Tag&gt;</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&lt;T,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;T,Tag&gt;</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&lt;T,Tag&gt;::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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</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">&gt;</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&lt;T&gt;</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&lt;T&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;T,Tag&gt;</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&lt;T,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;T,Tag&gt;</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&lt;T,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;T,Tag&gt;</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&lt;T,Tag&gt;::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 &#169; 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&#160;1.&#160;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">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</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">&lt;</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">&gt;</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&lt;F&gt;::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">&lt;</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">&lt;</span><span class="identifier">_</span><span class="special">&gt;</span> <span class="special">&gt;</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">&lt;</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">&gt;</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&lt;F,ClassTransform&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</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">&lt;</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">&gt;</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&lt;F&gt;</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&lt;F&gt;::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">&lt;</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">&lt;</span><span class="identifier">_</span><span class="special">&gt;</span> <span class="special">&gt;</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">&lt;</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">&gt;</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&lt;T,ClassTransform&gt;</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&lt;T,ClassTransform&gt;::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 &#169; 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&#160;1.&#160;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 &#169; 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&#160;1.&#160;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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;Types,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;Types,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;Types,Tag&gt;::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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;Types,Tag&gt;::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 &#169; 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&#160;1.&#160;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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">__non_const</span><span class="special">,</span><span class="identifier">__non_volatile</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">__const_qualified</span><span class="special">,</span><span class="identifier">__non_volatile</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">__volatile_qualified</span><span class="special">,</span><span class="identifier">__non_const</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">__const_qualified</span><span class="special">,</span><span class="identifier">__volatile_qualified</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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&lt;Tag1,Tag2...&gt;</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 &#169; 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&#160;1.&#160;Boost.FunctionTypes 2.5">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;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">&lt;</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(&amp;</span> <span class="identifier">func</span><span class="special">)());</span>
+
+<span class="keyword">template</span><span class="special">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">R</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">accept_function</span><span class="special">(</span><span class="identifier">R</span><span class="special">(&amp;</span> <span class="identifier">func</span><span class="special">)(...));</span>
+
+<span class="keyword">template</span><span class="special">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</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">&amp;</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">(&amp;</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">&lt;</span><span class="keyword">float</span><span class="special">(*)(</span><span class="keyword">float</span><span class="special">)&gt;(&amp;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">function_pointer</a><span class="special">&lt;</span><span class="identifier">Seq</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;(&amp;</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 &#169; 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&#160;1.&#160;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&#160;1.&#160;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&#160;1.&#160;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 &#169; 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>